neo4j属性是否区分大小写?

Pra*_*tal 2 neo4j cypher

neo4j属性是否区分大小写?换一种说法; 这两个Cypher查询是相同还是不同:

MATCH (n:Person {name: "Someone"}) RETURN n;

MATCH (n:Person {name: "someone"}) RETURN n;
Run Code Online (Sandbox Code Playgroud)

was*_*ren 7

是的,属性值区分大小写.您提供的密码查询是不同的.

以下查询创建两个节点:

create (p1:Person {name:"Someone"}), (p2:Person {name:"someone"})
Run Code Online (Sandbox Code Playgroud)

以下只返回一个节点......

MATCH (n:Person {name: "Someone"}) RETURN n;
Run Code Online (Sandbox Code Playgroud)

但是,您可以创建不区分大小写的索引(假设它name是索引的一部分).查看Neo4j文档了解更多信息.

  • @StefanArmbruster,感谢您的更新!值得一提的是,如果未使用索引(如您的示例中所示),查询可能会非常慢. (3认同)
  • 正确答案的小插件:你可以在where过滤器中使用不区分大小写的正则表达式匹配 - 但是这不会使用模式索引:`MATCH(n:Person)WHERE n.name =〜"(?i)someone" RETURN n`应返回两者. (2认同)
  • ...这取决于你的数据量;-)如果你有一个巨大的图形但只有少数节点带有'Person`标签,那么草绘的正则表达式查询将会相当快. (2认同)