Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据neo4j中的不同节点属性搜索具有_Neo4j - Fatal编程技术网

如何根据neo4j中的不同节点属性搜索具有

如何根据neo4j中的不同节点属性搜索具有,neo4j,Neo4j,我正在使用nodejs和Neo4j开发一个应用程序。我有一个节点:person,它具有名称、城市和学校等属性。现在,我想提供一个搜索功能,让他/她按姓名、城市、学校或两者的组合搜索个人详细信息。那么,我有没有办法在neo4j中实现这一点呢?是的,这是可能的 例如,要查找具有指定的名称和城市的人员节点,可以使用以下密码查询: MATCH (p:Person) WHERE p.name = 'KMJ' AND p.city = 'Noida' RETURN p; 由于您似乎正在学习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 = $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})