neo4j如何进行不同的描述限制10

neo4j如何进行不同的描述限制10,neo4j,cypher,Neo4j,Cypher,我有这个疑问 MATCH (u:User)-[:CreatesChat]-(c:ChatItems) with u,count(c.id) as chats order by chats desc with chats,u return chats,u limit 10 我想得到前10个不同的团队。 我该怎么做 就是这个问题,对吗 match (chatitems) with chatitems as C match (teams) with distinct teams as T matc

我有这个疑问

MATCH (u:User)-[:CreatesChat]-(c:ChatItems)
with u,count(c.id) as chats
order by chats desc 
with chats,u
return chats,u limit 10
我想得到前10个不同的团队。 我该怎么做

就是这个问题,对吗

match (chatitems)
with chatitems as C
match (teams)
with distinct teams as T
match (T)-[r:PartOf]-(C)
with C,  T.id as num order by num desc  
return {chatid:C.id, teams:collect(num)[0..10]}
编辑

我有这个疑问

MATCH (u:User)-[:CreatesChat]-(c:ChatItems)
with u,count(c.id) as chats
order by chats desc 
with chats,u
return chats,u limit 10
我需要聊天在另一个查询中使用

MATCH (c:ChatItems)-[:PartOf]->(t:TeamChatSession)-[:OwnedBy]-()
但是我只需要chats.id和user.id的前10个代码


我如何编写此查询以保留chats和user的前10个值?

再次强调,为额外强调,请向节点添加标签!您的查询将保持难以置信的缓慢,直到您这样做

因此,假设您确实添加了标签,并且假设您的:Team节点已经是唯一的,那么您应该在:Teamid上有一个唯一的约束,这可能就是您想要的:

MATCH (team:Team)
WITH team ORDER BY team.id DESC LIMIT 10
...
按照您的要求,您现在拥有团队id顺序中的前10个团队

然而,您的查询正在做其他事情,因此我认为您还有其他事情要与这些前10强团队一起做。如果你想得到你想要的帮助,你必须准确地告诉我们你想要做什么,你最终想要的结果是什么

这里有一些猜测

你想获得前10名团队中所有聊天记录的聊天ID吗?那么这应该是可行的:

MATCH (team:Team)
WITH team ORDER BY team.id DESC LIMIT 10
OPTIONAL MATCH (team)-[:PartOf]-(chat:Chat)
RETURN team.id, COLLECT(chat.id) AS chats
对于每一行,您将拥有团队id,然后是属于该团队的聊天id列表

如果这不是你想要的,请说清楚。如果你只回答一个问题,并且详细阐述和澄清,而不是每天提出一两个与同一问题直接相关的新问题,这也会有所帮助


我还强烈建议您重新阅读全文,并阅读浏览器应用程序中包含的所有教程。现在您最需要的是对Cypher查询如何工作有一个坚实的基本理解,然后在此基础上进行构建。在没有基本知识的情况下,试图在这里反复提问对您没有好处。

此查询太慢。这需要很长时间,而且不会完成可能重复的“是”,但我需要不同的teams.id代码。如果要提高速度,请在节点上添加标签!如果没有标签,绑定到chatitems和teams变量的前两个匹配项将在数据库中每种类型的每个节点上匹配!我对标签有问题。在neo4j浏览器中执行查询时,不返回行。这是为什么?该查询假设您的团队节点已经有:team标签,而聊天节点已经有:chat标签。必须确保在创建节点时将标签应用于节点,或者至少在以后设置标签。只有在标记了节点之后,查询才会工作,因为查询会显式地查找具有该标签的节点以进行匹配。只有当节点标记为:Team时,在:Team上匹配的第一行才能工作。请重新阅读开发手册。标签及其应用程序是neo4j的一个非常基本的部分,您必须掌握。非常感谢。今晚我会检查的。我确实在neo4j上取得了进展。我添加了标签。但我有一个疑问。我编辑了我的第一个问题。