好吧,我回到这里重新提出一个尚未解决的问题。我会尝试更好地解释它。
我收到了以下密码查询:
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"]
我需要一个查询来提取第一个[p],具体取决于数组的内容(在本例中为Node [1346] {language:“en-us”,text:“female”},因为“en-我们“是第一次出现在p列上有一个macth的数组。
再次感谢您的耐心等待。
保罗答案 0 :(得分:0)
也许有更聪明的方法可以解决这个问题,但至少这句话可以解决你的问题:
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