您好我正在使用sortStrings()
,我有以下架构:
neo4j
我正在搜索一些姓名或昵称为"person":
{
"name": "Robert Mathews",
"nicknames": ["rob", "bert", "Mathew"]
}
的人
我知道如何通过列表搜索属性:
['mike', 'rob', 'nick']
但现在问题在于MATCH (p:Person)
WHERE p.name IN ['mike', 'rob', 'nick']
OR p.nickname IN ['mike', 'rob', 'nick']
RETURN p
和p.name
不再是p.nickname
类型,而是string
类型。
有人能指出我正确的方向来匹配输入数组和人物阵列并获得最佳匹配吗?
答案 0 :(得分:1)
您可以执行以下操作,即可查找节点上昵称列表中可能存在于您要检查的昵称列表中的任何项目。
MATCH (p:Person)
WHERE p.name IN ['mike', 'rob', 'nick']
OR ANY( nn IN p.nickname WHERE nn IN ['mike', 'rob', 'nick'])
RETURN p
答案 1 :(得分:1)
APOC功能apoc.coll.intersection可能会有所帮助:
MATCH (p:Person)
WHERE
SIZE(apoc.coll.intersection(p.name, ['mike', 'rob', 'nick'])) > 0 OR
SIZE(apoc.coll.intersection(p.nickname, ['mike', 'rob', 'nick'])) > 0
RETURN p;