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"} |
+-----------------------------------------------------------------------------------+
和以下数组: [“it it”、“en us”、“fr fr”、“de de”、“ru ru”、“hi hi”]

如何更改查询以仅返回一个结果,其中“语言”与数组的第一个匹配项相同

如果数组应该是 [“fr-fr”、“jp-jp”、“en-us”、“it-it”、“de-de”、“ru-ru”、“hi-hi”]

我需要返回节点[1346],因为它是第一个在语言数组[en-us]中匹配的节点,没有[fr-fr]和[jp-jp]的条目

多谢各位


Paolo

Cypher可以表示数组,并将索引放入数组中。因此,在一个层面上,你可以这样做:

start n=node(1344)
match (n)-[t:_HAS_TRANSLATION]-(p)         
where p.language = ["it-it", "en-us", "fr-fr", "de-de", "ru-ru", "hi-hi"][0] return t,p; 
这实际上与请求那些节点p相同,其中p.language=“it”(数组中的第一个元素)

现在,如果您的意思是
语言
属性本身可以是一个数组,那么只需将其视为一个数组:

$ create (p { language: ['it-it', 'en-us']});
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 1
Properties set: 1
$ match (p) where p.language[0] = 'it-it' return p;
+-------------------------------------+
| p                                   |
+-------------------------------------+
| Node[1]{language:["it-it","en-us"]} |
+-------------------------------------+
1 row
38 ms
注意
p.language[0]
上的数组括号


最后,如果你说的是把你的语言部分分成几部分(即“en-us”=[“en”,“us”]),那么cypher的字符串处理函数有点弱,我不会尝试这样做。相反,在将其插入图形之前,我会先对其进行预处理,并将其作为单独的部分进行查询。

您能解释更多关于这一部分的信息吗?“其中‘语言’与数组的第一次出现相同?”我在原始描述中添加了详细信息,目的是与数组中的第一种语言不匹配,但是数组中的第一语言与p语言有对应关系。希望澄清。我在原始描述中添加了细节,目的不是与数组中的第一语言匹配,而是与数组中的第一语言在p语言中具有对应关系。希望澄清。