neo4j中的格式返回:按项分组
我使用以下密码获取标签用户的所有实体:neo4j中的格式返回:按项分组,neo4j,cypher,Neo4j,Cypher,我使用以下密码获取标签用户的所有实体: MATCH (u:User) OPTIONAL MATCH (u)-[r:RATED]->(m:Movie) WITH u,r,m RETURN u.id as uid, m.id as mid, r.rating as rating 这将返回一个对象数组,其格式如下: [ { "uid": "user1", "mid": "bettercallsaul", "rating": 9 },
MATCH (u:User)
OPTIONAL MATCH (u)-[r:RATED]->(m:Movie)
WITH u,r,m
RETURN u.id as uid, m.id as mid, r.rating as rating
这将返回一个对象数组,其格式如下:
[
{
"uid": "user1",
"mid": "bettercallsaul",
"rating": 9
},
{
"uid": "user1",
"mid": "breakingbad",
"rating": 10
}
// ... etc
]
但是,我想按u.id
(或uid
)对其进行分组,以便它返回类似(或类似)的内容:
我想您正在寻找COLLECT()函数 也许可以尝试以下查询:
MATCH (u:User)
OPTIONAL MATCH (u)-[r:RATED]->(m:Movie)
RETURN u.id,COLLECT({mid:m.id, rating:r.rating}) as movieRatings
如果您使用的是Neo4j 3.1.x或更高版本,则可以使用模式理解和地图投影来简化:
MATCH (u:User)
RETURN u.id as user,
[(u)-[r:RATED]->(m:Movie) | m {.id, rating:r.rating}] as movieRatings
如果希望MovieRating列表成为每个用户属性地图的一部分,也可以使用地图投影来完成此操作:
MATCH (u:User)
RETURN u {.id, .name, movieRatings:
[(u)-[r:RATED]->(m:Movie) | m {.id, rating:r.rating}] } as user
我想您正在寻找COLLECT()函数 也许可以尝试以下查询:
MATCH (u:User)
OPTIONAL MATCH (u)-[r:RATED]->(m:Movie)
RETURN u.id,COLLECT({mid:m.id, rating:r.rating}) as movieRatings
如果您使用的是Neo4j 3.1.x或更高版本,则可以使用模式理解和地图投影来简化:
MATCH (u:User)
RETURN u.id as user,
[(u)-[r:RATED]->(m:Movie) | m {.id, rating:r.rating}] as movieRatings
如果希望MovieRating列表成为每个用户属性地图的一部分,也可以使用地图投影来完成此操作:
MATCH (u:User)
RETURN u {.id, .name, movieRatings:
[(u)-[r:RATED]->(m:Movie) | m {.id, rating:r.rating}] } as user
我不知道是否完全有可能做你想做的事。 不过我想你会接近尼奥的
我不知道是否完全有可能做你想做的事。 不过我想你会接近尼奥的 这些都是相关的问题。使用普通密码,您无法动态地将密钥分配给映射(例如示例中的“user1”)。您可以使用类似“配对”的列表或。这些是相关的问题。使用普通密码,您无法动态地将密钥分配给映射(例如示例中的“user1”)。您可以使用“配对”列表或。