如何在Neo4j中查询含非标准JSON邮箱属性的Person节点
非标准JSON格式的Person节点邮箱查询方案
直接用Cypher结合APOC函数处理非标准格式,无需修改节点结构:
MATCH (p:Person) WITH p, apoc.text.replace(p.emails, '=', ':') AS correctedEmails WHERE 'username1@hotmail.com' IN apoc.convert.fromJsonList(correctedEmails) RETURN p
逻辑说明:
apoc.text.replace(p.emails, '=', ':'):把emails属性里的等号替换为冒号,将非标准格式转为合法JSON字符串apoc.convert.fromJsonList(correctedEmails):将修正后的字符串转换成JSON数组IN关键字判断目标邮箱是否存在于转换后的数组中
如果原emails格式里存在邮箱地址外的特殊等号(比如键名带等号),可以更精准地替换,比如针对键值对的等号做匹配替换,但如果只是简单的["xxx=xxx.com", "yyy=yyy.com"]格式,全局替换等号即可满足需求。
内容的提问来源于stack exchange,提问作者abbood
相关产品推荐
相关产品推荐

