gpt4 book ai didi

javascript - 在 Neo4j 中以对象数组形式检索数据

转载 作者:行者123 更新时间:2023-12-03 06:20:38 27 4
gpt4 key购买 nike

有很多关系和节点。我们希望从 Neo4j 数据库中以对象数组的形式检索数据。

如果我们匹配为:

MATCH (user: user {name:"x"}) 
OPTIONAL MATCH (user)-[r]->(item)
OPTIONAL MATCH (item)-[s]->(approver)
RETURN user, item, approver

我们得到的结果是:

[{user:{properties:{name:"x"}}, item:{properties:{name:"abc"}}, approver:{properties:{name:"a"}}},
{user:{properties:{name:"x"}}, item:{properties:{name:"abc"}}, approver:{properties:{name:"b"}]}},
{user:{properties:{name:"x"}}, item:{properties:{name:"xyz"}}, approver:{properties:{name:"c"}}},
{user:{properties:{name:"x"}}, item:{properties:{name:"xyz"}}, approver:{properties:{name:"d"}}} }]

我们需要得到类似的结果,以便在客户端处理巨大关系时降低复杂性:

[{user:{properties:{name:"x"}}, item:{properties:{name:"abc"}},  approvers:[{properties:{name:"a"}}, {properties:{name:"b"}}]},    
{user:{properties:{name:"x"}}, item:{properties:{name:"xyz"}}, approvers:[{properties:{name:"c"}}, {properties:{name:"d"}}] }]

如何做到这一点?

最佳答案

听起来您需要收集列表中的项目。试试这个:

MATCH (user: user {name:"x"}) 
OPTIONAL MATCH (user)-[r]->(item)
RETURN user, COLLECT(item)

您可能需要花一些时间查看 Cypher 备忘单并查看 COLLECT() 函数以及列表操作。

编辑

您似乎在描述中添加了某个项目的潜在批准者。在这种情况下,您似乎想要按用户和项目进行分组,并为它们提供一组批准者。

MATCH (user: user {name:"x"}) 
OPTIONAL MATCH (user)-[r]->(item)
OPTIONAL MATCH (item)-[s]->(approver)
RETURN user, item, COLLECT(approver) AS approvers

关于javascript - 在 Neo4j 中以对象数组形式检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38889328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com