【问题标题】:Find Neo4j nodes where the property is not set查找未设置属性的 Neo4j 节点
【发布时间】:2016-05-25 20:24:05
【问题描述】:

使用 Cypher,如何找到不存在属性的节点?

例如,我有两个节点:

A = {foo: true, name: 'A'},  B = { name: 'B'}

现在我想找到B,在没有设置foo属性的基础上选择它。我该怎么做?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:
    MATCH (f) WHERE f.foo IS NULL RETURN f
    

    【讨论】:

      【解决方案2】:

      正如迈克尔·亨格所说

      MATCH (n) WHERE NOT EXISTS(n.foo) RETURN n
      

      在旧版本的 Neo4j 上,您可以使用 HAS:

      # Causes error with later versions of Neo4j
      MATCH (n) WHERE NOT HAS(n.foo) RETURN n
      

      【讨论】:

      • 使用NOT exists(n.foo) 以实现未来兼容性。
      • Has 不再受 Neo4j 支持并产生错误
      • 您也可以使用 IS NULL 和 IS NOT NULL。例如 MATCH (n) WHERE n.foo IS NULL RETURN n
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-03
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      相关资源
      最近更新 更多