【问题标题】:neo4j - cypher query to find nodes which properties match object parameterneo4j - 密码查询以查找属性与对象参数匹配的节点
【发布时间】:2020-09-30 19:06:37
【问题描述】:

我正在寻找一个查询,它可以找到所有具有与作为对象的参数匹配的属性的节点。节点的属性可以是超集(包含比过滤器更多的属性)

例如

:param obj : { first : "first" }

CREATE (n:Test { first : "first", second : "second" });
CREATE (m:Test { first : "first" });
CREATE (f:Fail { first : "bad", second : "second" });
MATCH (c)
    WHERE
        PROPERTIES(c) = $obj
RETURN c;

nm 应返回,因为它们在 first : "first" 上匹配

【问题讨论】:

  • 您是否有义务使用 Cypher 执行此操作?当我遇到这类问题时,我通常可以用另一种语言构建查询,然后从该语言的 Neo4j 驱动程序执行它。
  • @stellasia 我不确定用另一种语言构建它有什么帮助,我不想冒险引入任何注入。我也宁愿发展我的密码知识,这样如果我确实需要直接查询我的图表,我就不必绕道而行并通过另一种语言来做。查询构建器也总是可能已过时或不再开发。

标签: neo4j cypher


【解决方案1】:

使用 apoc 是可行的,基本上是通过将 obj 与属性的子图匹配,只包含 obj 中也存在的键

WITH { first : "first" } AS obj
MATCH (c)
WHERE apoc.map.submap(properties(c),keys(obj),[],false)= obj
RETURN c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多