在 Neo4J 中,如何检索节点,以及有关它们是否连接到特定节点的附加信息

In Neo4J, how to retrieve nodes, along with additional information about if they are connected or not to a specific node

我有包含产品信息 (P) 的节点。每次用户喜欢该产品时,都会创建关系 [L] 连接用户 (U)->[L]->[P]

现在我需要根据特定条件检索一组 Product 节点,还需要 return 额外的信息,表明它们是否被特定用户喜欢。

所以如果产品结构是这样的

{ Product Name, Price }

如果说,3 个产品中有 1 个被用户 X 喜欢,我需要的结果集可能是这样的

[{Product1, 29.00, true}, {Product2, 39.00, false}, {Product3, 25.00, false}]

这里的true是指用户喜欢过Product1,没有喜欢过Product2。

我不确定如何编写包含 returned 节点是否受欢迎的附加信息的查询

我认为这样的东西可以满足您的需求。

匹配所有产品。您将希望以某种方式缩小这场比赛的范围。

可选择匹配用户喜欢的每个产品。

Return 包含名称、价格和类似状态的地图集合。

match (p:Product)
optional match (u:User)-[:LIKES]->p
with {product:p.name, price:p.price, like: case when u is null then false else true end} as Product_Detail
return collect(Product_Detail)