gpt4 book ai didi

Neo4j/密码 : sort results based on a sorted collection

转载 作者:行者123 更新时间:2023-12-04 16:47:41 25 4
gpt4 key购买 nike

这是我的查询的开始。

MATCH (person:Person)<-[:NAMES]-(name:PersonName)-[:COMES_FROM]->(source:Source)
WITH DISTINCT person, COLLECT([name, source]) AS tuples
WITH person, REDUCE(result=[], tuple in tuples |
... ) AS personName
ORDER BY personName.lastName
RETURN person

问题在于:每个人都有多个名字,每个名字来自 5 个来源中的 1 个。但并非所有来源都是平等的。我想获得来自最佳来源的名称,如果不可用,则次之,等等。 ["source.best", "source.very-good", "source.ok", "source.worst"] 我想对 personName 集合做一些自定义排序,以源为谓词,然后返回第一个。如果来源是数字或其他东西,那就更容易了。

有什么建议吗?

最佳答案

[√]不要一起使用distinct和aggregation

您可以使用文字映射作为排序映射,即将字符串映射到值。然后,当您按人汇总时,您只需捕获每个名字的第一个(头部)。

WITH {`source.best`:1, `source.very-good`:2, `source.ok`:3, `source.worst:4} as sourceSort
MATCH (person:Person)<-[:NAMES]-(name:PersonName)-[:COMES_FROM]->(source:Source)
WITH person, name ORDER BY sourceSort[source.name]
RETURN person, HEAD(COLLECT(name.lastName)) AS name
ORDER BY name

关于Neo4j/密码 : sort results based on a sorted collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37799116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com