如何根据neo4j中的不同节点属性搜索具有
我正在使用nodejs和Neo4j开发一个应用程序。我有一个节点:person,它具有名称、城市和学校等属性。现在,我想提供一个搜索功能,让他/她按姓名、城市、学校或两者的组合搜索个人详细信息。那么,我有没有办法在neo4j中实现这一点呢?是的,这是可能的 例如,要查找具有指定的如何根据neo4j中的不同节点属性搜索具有,neo4j,Neo4j,我正在使用nodejs和Neo4j开发一个应用程序。我有一个节点:person,它具有名称、城市和学校等属性。现在,我想提供一个搜索功能,让他/她按姓名、城市、学校或两者的组合搜索个人详细信息。那么,我有没有办法在neo4j中实现这一点呢?是的,这是可能的 例如,要查找具有指定的名称和城市的人员节点,可以使用以下密码查询: MATCH (p:Person) WHERE p.name = 'KMJ' AND p.city = 'Noida' RETURN p; 由于您似乎正在学习neo4j,请参
名称
和城市
的人员
节点,可以使用以下密码查询:
MATCH (p:Person)
WHERE p.name = 'KMJ' AND p.city = 'Noida'
RETURN p;
由于您似乎正在学习neo4j,请参阅本页的一些教程。您可以使用以下查询:
MATCH (p:Person)
WHERE p.name = $name AND p.city = $city AND p.school=$school
RETURN p {.name, .city, .school}
UNION
MATCH (p:Person)
WHERE p.name = $name OR p.city = $city OR p.school=$school
RETURN p {.name, .city, .school}
其中:$name、$city和$school是从前端传入的参数。
此外,使用两个匹配语句之间的并集具有以下优点:
- 您的副本将被删除
- 最佳匹配将是您的第一个结果,考虑到最佳匹配是满足所有3个标准的结果:姓名、城市、学校
- 如果没有大量数据,查询将快速执行
- 可读查询,将两条匹配语句分开
希望这有帮助 我很抱歉,我似乎没有把问题提对。我想知道的是,如何将搜索到的值作为参数从后端传递到查询中,以便它检查节点的所有属性并发送匹配的节点。例如,我当前的查询是
.run('Match(n:person{name:{nameParam}})Return(n),{nameParam:searchedvalue})
现在我只按姓名搜索,但我希望用户也可以按城市和学校搜索。谢谢,我已经发现我们可以像这样做:.run('Match(n:person)其中n.name=$nameParam或n.city=$nameParam或n.school=$nameParam Return(n)”,{nameParam:searchedvalue})