在cypher、UNWIND或FOREACH中循环(Neo4j)
我在neo4j数据库中有一个关系:在cypher、UNWIND或FOREACH中循环(Neo4j),neo4j,cypher,Neo4j,Cypher,我在neo4j数据库中有一个关系: (r:RateableEntity)<-[t:TAG]-(h:HashTags) 我写了这个密码: MATCH p = (r:RateableEntity)<-[t:TAG]-(h:HashTag) UNWIND TAIL (NODES(p)) AS hash WITH COUNT(hash) as Count, h, hash ORDER BY hash LIMIT 3 WHERE h.tag in hash.tag MATCH (r:Rate
(r:RateableEntity)<-[t:TAG]-(h:HashTags)
我写了这个密码:
MATCH p = (r:RateableEntity)<-[t:TAG]-(h:HashTag)
UNWIND TAIL (NODES(p)) AS hash
WITH COUNT(hash) as Count, h, hash
ORDER BY hash LIMIT 3
WHERE h.tag in hash.tag
MATCH (r:RateableEntity)<-[:TAG]-(h:HashTag)
RETURN DISTINCT h.tag, r.id, Count
LIMIT 3
要记住的一些事情:
tail(nodes(p))
将只是一个仅包含最后一个节点的元素列表。它没有改变行数(因为列表大小是1),在这里也帮不了你
此查询应能更好地工作:
MATCH (h:HashTag)
WITH h LIMIT 3 // best to limit early to avoid doing unnecessary work
WITH h, h.tag as hashtagName, size((h)-[:TAG]->()) as hashtagCount, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
WITH h {hashtagName, hashtagCount, hashtagItems} as entry
RETURN collect(entry) as hashtagList
编辑
如果您希望按大小列出前3个hashtag,则可以使用下面修改的查询:
MATCH (h:HashTag)
WITH h, size((h)-[:TAG]->()) as hashtagCount
ORDER BY hashtagCount DESC
LIMIT 3
WITH h, hashtagCount, h.tag as hashtagName, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
WITH h {hashtagName, hashtagCount, hashtagItems} as entry
RETURN collect(entry) as hashtagList
要记住的一些事情:
tail(nodes(p))
将只是一个仅包含最后一个节点的元素列表。它没有改变行数(因为列表大小是1),在这里也帮不了你
此查询应能更好地工作:
MATCH (h:HashTag)
WITH h LIMIT 3 // best to limit early to avoid doing unnecessary work
WITH h, h.tag as hashtagName, size((h)-[:TAG]->()) as hashtagCount, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
WITH h {hashtagName, hashtagCount, hashtagItems} as entry
RETURN collect(entry) as hashtagList
编辑
如果您希望按大小列出前3个hashtag,则可以使用下面修改的查询:
MATCH (h:HashTag)
WITH h, size((h)-[:TAG]->()) as hashtagCount
ORDER BY hashtagCount DESC
LIMIT 3
WITH h, hashtagCount, h.tag as hashtagName, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
WITH h {hashtagName, hashtagCount, hashtagItems} as entry
RETURN collect(entry) as hashtagList
我的问题是这样的,也许其他人需要知道:
MATCH (:RateableEntity)<-[:TAG]-(p:HashTag)
RETURN p.tag As Tag, COUNT(p) as Count, [(p)-[:TAG]->(m) | m.id][..3] AS
RateableEntities ORDER BY Count DESC LIMIT 3
将(:应课差饷租值实体)(m)| m.id][…3]匹配为
应课差饷租值单位按计数顺序说明限额3
以下是网站上文档的链接:
我发现这是我的问题,也许其他人需要知道:
MATCH (:RateableEntity)<-[:TAG]-(p:HashTag)
RETURN p.tag As Tag, COUNT(p) as Count, [(p)-[:TAG]->(m) | m.id][..3] AS
RateableEntities ORDER BY Count DESC LIMIT 3
将(:应课差饷租值实体)(m)| m.id][…3]匹配为
应课差饷租值单位按计数顺序说明限额3
以下是网站上文档的链接:
非常感谢您的快速回答,它正按照我的预期工作。只需再问一个问题,如果我想按
topsize
订购,您有什么建议?谢谢您的回复,但我刚刚发现限制
没有按预期工作,但我正在发布另一种方式,我在neo4j
网站上找到了这种方式。再次,我需要修改此查询以返回与此标签
相关的项目,按创建日期
排序(因为所有这些项目都具有创建日期
属性),感谢您的帮助听起来您可能应该为此创建一个新问题,包括您迄今为止尝试过的内容、为什么它不是您所需要的,以及示例输入和预期输出。非常感谢您的快速回答,它正在按照我的预期工作。只需再问一个问题,如果我想按
顶部大小订购,你有什么建议?谢谢你的回复,但我刚刚发现限制没有按预期工作,但我正在发布我在neo4j
网站上发现的另一种方式,我需要修改此查询以返回与此标签
、order bycreatedDate
(因为所有这些项目都具有createdDate
属性)相关的项目,感谢您的帮助听起来您可能应该为此创建一个新问题,并包括您迄今为止尝试的内容,为什么它不是您需要的,以及示例输入和预期输出。