通常我们可以查询属性值,例如:
Match (n:Product)
where n.name="iPhone X"
return n
但是,就我而言,我不知道应该匹配哪个属性,但我只知道值,在这种情况下属性名称就变成了一种变量。我想要这样的东西:
Match (n:Product)
where n.{name}="iPhone X"
return n
或使用关系变量 r:
Match (n:Product)-[{r}]->(c:Color {name:'white'})
在这两种情况下,在我的申请中我知道一些财产或关系value事先,不知道具体应该匹配哪个属性。
此查询是否基于 Neo4j 或 spring-data-neo4j 支持的属性或关系值?
看看这个例子:
CREATE (:Node {name : 'Bruno'})-[r:REL_TYPE]->()
设置 Neo4j 浏览器参数:
:param {prop : 'name', rel_type : 'REL_TYPE'}
然后查询:
MATCH (n:Node)
WHERE n[{prop}] = "Bruno"
RETURN n
结果:
╒════════════════╕
│"n" │
╞════════════════╡
│{"name":"Bruno"}│
└────────────────┘
即:您可以使用属性名称作为括在方括号中的键WHERE
clause.
通过动态关系类型查询的解决方法可以使用type() https://neo4j.com/docs/developer-manual/current/cypher/functions/scalar/#functions-type函数,这样:
MATCH (:Node)-[r]->()
WHERE type(r) = {rel_type}
return r
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)