【问题标题】:Neo4J - find if value in array property of 2 nodes matchesNeo4J - 查找 2 个节点的数组属性中的值是否匹配
【发布时间】:2016-10-13 22:49:32
【问题描述】:

您好,我有一个用例,其中我有一个属性为数组的节点。

*

Node({name:'a', colors:['red','green','blue']})
Node({node:'b',colors:['blue','black','red']})

*

现在我想找出它们的颜色属性中 2 个节点之间的匹配值是什么。我应该能够获得匹配值,以便在查询中进一步传递以进行处理。

【问题讨论】:

    标签: neo4j iterated-function


    【解决方案1】:
    MATCH (a:Node {name:'a'})
    MATCH (b:Node {name:'b'})
    RETURN filter(x IN a.colors WHERE x IN b.colors);
    

    如果您想继续查询:

    MATCH (a:Node {name:'a'})
    MATCH (b:Node {name:'b'})
    WITH filter(x IN a.colors WHERE x IN b.colors) AS v
    UNWIND v AS matchingVals
    MATCH ...
    ...
    

    【讨论】:

    • 感谢您的建议。如前所述,如何在变量中捕获此匹配值并进一步向下传递给查询。可以说根据这个匹配值我想做点什么。
    • 我已经编辑了我的答案,以展示您如何将价值带入。
    • 如果您希望该值是一个列表,请不要使用 UNWIND。 UNWIND 将列表展开成行。
    • 谢谢,这行得通。我的完整用例是这样的,我有节点列表,并希望根据某些条件建立节点之间的关系。每个节点都有 property1 是数组,property2 也是数组,现在要在这两个节点之间建立关系,它们应该有 property1 包含一个公共元素,然后是 property2 中的一个匹配元素
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2017-07-26
    相关资源
    最近更新 更多