根据NEO4J中是否存在关系,如何在返回节点上添加属性

根据NEO4J中是否存在关系,如何在返回节点上添加属性,neo4j,Neo4j,在neo4j中,我有两个节点标签。用户和组。我希望获得所有组,并希望在返回时在组中添加属性(如果该组与我选择的用户有关系) 比如说, MATCH (u:User) WHERE ID(u) = 81 WITH u MATCH (g:Groups) WITH g OPTIONAL MATCH (u)-[c:CREATED]-(g) return g,ID(c) 上述查询的输出为 g name vishal image ca1f4ed2658a1855cebe21c006291e78.jp

在neo4j中,我有两个节点标签。用户和组。我希望获得所有组,并希望在返回时在组中添加属性(如果该组与我选择的用户有关系)

比如说,

MATCH (u:User)
WHERE ID(u) = 81
WITH u
MATCH (g:Groups)
WITH g
OPTIONAL MATCH (u)-[c:CREATED]-(g)
return g,ID(c)
上述查询的输出为

g
name    vishal
image   ca1f4ed2658a1855cebe21c006291e78.jpg
description vishal

ID(c)
339

如果关系存在为g.create=true或g.create=false,我想在g中添加属性。我不想在数据库中设置此属性。我只想将其与其他属性一起返回。我怎么做呢?

这对你有用吗

MATCH (u:User), (g:Groups)
WHERE ID(u) = 81
OPTIONAL MATCH (u)-[c:CREATED]-(g)
return {group: g, created: NOT(c IS NULL)} AS result, ID(c);

结果
对象包含一个
节点和一个单独的
创建的
布尔值。

可以更短您不需要对组进行中间匹配,而是将标签拉到可选匹配中。@MichaelHunger实际上,我已经更新了我的答案以合并2个
匹配
语句,这更符合原始查询。我们希望查看所有
节点,否则创建的
将始终为
true
。您的答案是正确的,但我在从结果中读取组对象时遇到问题。所以,在不返回单个对象的情况下,我将其更新为单独返回,然后将其分配到组对象中。