通常我们可以查询属性值,例如:
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'})
在这两种情况下,在我的应用程序中,我事先知道一些属性或关系值,而不知道它应该匹配哪个属性。
此查询是否基于Neo4j或spring-data-neo4j支持的属性或关系值?
答案 0 :(得分:0)
看看这个例子:
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
子句中方括号中的键。
按动态关系类型查询的解决方法可以使用type()函数,这样:
MATCH (:Node)-[r]->()
WHERE type(r) = {rel_type}
return r