我想将数组存储到Neo4j db,在了解数组字段类型之前,我将数组存储为逗号分隔的文本字段,并使用正则表达式查找具有特定项的节点!现在,我想将数组另存为数组字段,但是我无法使用“ IN”关键字编写不区分大小写的条件!我的正则表达式可以在cs文本字段中找到:
MATCH (user:USER)-[:MEMBER_OF]->(group:SOME_GROUP) where
group.resources =~ "(?i)(?:.*,|^)one_resource(?:,.*|$)"
RETURN group
我存储的数据是这样的:
One_Resource,Another_Resource,...
结果是正确的,但我在检索此模型时遇到一些问题,数组字段在检索中更好。
您是否有解决此问题的建议或方法?
这是我对数组字段的密码:
MATCH (node {hid:"abc"})
SET node.array_field = ["Foo","Bar","Baz","BaG"]
并找到与此:
MATCH (node) WHERE "foo" IN node.array_field RETURN node
但这是区分大小写的:(
谢谢
我在书《学习密码》中找到了答案。
必须ANY (...IN...WHERE...)
在WHERE子句中使用:
MATCH (node)
WHERE ANY ( item IN node.array_field WHERE item =~ "(?i)foo" )
RETURN node
现在可以使用Regex查找所需的节点。
有四个集合谓词。它们如下:
如果我们希望所有书籍都标记为NoSQL但不标记为Neo4j,则可以使用NONE谓词,如下所示:
MATCH (b:Book)
WHERE ANY ( tag IN b.tags WHERE tag = 'nosql' )
AND NONE ( tag in b.tags WHERE tag = 'neo4j' )
RETURN b.title,b.tags
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句