我有两个疑问。
第一个查询是
match (user)-[r:CreatesChat]-(chatitems)
第二个查询是
match (chatitems)-[r:PartOf]-(teamschat)-[s:OwnedBy]-()
我想返回第一个查询的前 3 个用户
并返回第二个查询中的前 3 支球队
目标是检查第一个查询的用户是否拥有第二个查询的团队
我的 neo4j 查询是
match (user)-[r:CreatesChat]-(chatitems)
with user.id as uid,chatitems.id as chatid
order by uid desc
with collect([uid])[..3] as users,collect([chatid])[..3] as chats
UNWIND users AS idusers
match (chatitems)-[r:PartOf]-(teamschat)-[s:OwnedBy]-()
return idusers
该查询返回
在 1360 毫秒内返回 133239 行,显示前 1000 行
但我执行查询
match (user)-[r:CreatesChat]-(chatitems)
with user.id as uid,chatitems.id as chatid
order by uid desc
with collect([uid])[..3] as users,collect([chatid])[..3] as chats
UNWIND users AS idusers
return idusers
返回的idusers是对的
在 539 毫秒内返回 3 行。
我如何关联这两个查询?
我认为您想要收集前 3 位用户和前 3 位团队,然后对每个集合进行放松。像这样的事情:
MATCH (user:User)-[:CreatesChat]->(chatitems:Chat)
WITH user ORDER BY user.id DESC LIMIT 3
WITH collect(user) AS users
MATCH (chatitems:Item)-[:PartOf]->(teamsChat:Team)-[:OwnedBy]-()
WITH users, teamsChat ORDER BY teamsChat.id DESC LIMIT 3
WITH users, collect(teamsChat) AS teams
UNWIND users AS user
UNWIND teams AS team
MATCH p=(chatitems:Item)-[:PartOf]-(team)-[:OwndedBy]-(user)
RETURN p
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)