Neo4j 如何根据数组中的第一个匹配项(和找到的节点)查询第一个节点?

Neo4j 如何根据数组中的第一个匹配项(和找到的节点)查询第一个节点?,neo4j,cypher,Neo4j,Cypher,好吧,我回来是想重新提出一个老问题。我会尽量解释得更好 我得到了以下密码查询: neo4j-sh$ start n=node(1344) match (n)-[t:_HAS_TRANSLATION]-(p) return t,p; +-----------------------------------------------------------------------------------+ | t | p

好吧,我回来是想重新提出一个老问题。我会尽量解释得更好

我得到了以下密码查询:

neo4j-sh$ start n=node(1344) match (n)-[t:_HAS_TRANSLATION]-(p) return t,p;
+-----------------------------------------------------------------------------------+
| t                                   | p                                           |
+-----------------------------------------------------------------------------------+
| :_HAS_TRANSLATION[2224]{of:"value"} | Node[1349]{language:"hi-hi",text:"(>0@"}    |
| :_HAS_TRANSLATION[2223]{of:"value"} | Node[1348]{language:"es-es",text:"hembra"}  |
| :_HAS_TRANSLATION[2222]{of:"value"} | Node[1347]{language:"ru-ru",text:"65=A:89"} |
| :_HAS_TRANSLATION[2221]{of:"value"} | Node[1346]{language:"en-us",text:"female"}  |
| :_HAS_TRANSLATION[2220]{of:"value"} | Node[1345]{language:"it-it",text:"femmina"} |
+-----------------------------------------------------------------------------------+
然后我有一个动态的语言数组,可以在任何查询中以任何顺序进行更改,如

["fr-fr","jp-jp","en-us", "it-it", "de-de", "ru-ru", "hi-hi"]
我需要一个查询来根据本例节点[1346]{language:en-us,text:female}中数组的内容仅提取第一个[p],因为en-us是数组的第一个匹配项,p列上有一个macth

再次感谢你的耐心


保罗

也许有更聪明的方法来解决这个问题,但至少这句话应该能解决你的问题:

START n=node(1344) match (n)-[t:_HAS_TRANSLATION]-(p)
WITH n, collect(p.language) as languages
WITH n, filter(x in ["fr-fr","jp-jp","en-us","it-it","de-de","ru-ru","hi-hi"] where x in languages)[0] as lang
MATCH (n)-[t:_HAS_TRANSLATION]-(p)
WHERE p.language = lang
RETURN t,p