我如何可以合并多个集合的Neo4j到1?

问题描述 投票:0回答:1

我在我的应用程序不同的事件以下集合,有我的查询和业务逻辑,让我单独的不同类型的事件到单独的收集的一些事情:

注:收藏有返回不同的节点/ RELS。 E.g两个集合可能有:User返回,但只有1可能有新的消息通知。

FriendEvents:[ { id: 'friend_id', status: 'new_friend', otherNode: {} } ]

WITH { event: newContactRequest, contactUser: contactUser } as contactEvents

MutualFriendEvents:[ { id: 'mutual_id' status: 'new_mutual_friend_request', differentNode: {} } ]

WITH { event: newMutualContactRequest, contactUser: mutualContactUser } as mutualContactEvents


以上是我所返回的集合。这里是我正在收集的事件:

COLLECT(distinct contactEvents) as contactEvents, collect(distinct mutualContactEvents) as mutualContactEvents

我该怎么办:return allActivitiesInTheOneList = contactEvents += mutualContactEvents(这样allActivitiesInTheOneList = 2合并集合)

奖金的问题:是否有可能进行排序最终收集?我希望能够作为排序依据的created_at日期的最终产品(这样的事情才能显示出来)。

问题是,我似乎无法这些集合合并到1个采集。是否有可能还是我没有看错你不能够与不同的节点合并的集合?

neo4j cypher graph-databases
1个回答
0
投票

绝对有可能,你应该只能够使用两个集合之间的+操作:

WITH COLLECT(distinct contactEvents) + collect(distinct mutualContactEvents) as allEvents
...

这就是说,你可能应该与每个单独而不是一次性(匹配处理和收集contactEvents,请确保您有不同的起始节点,如果你没有它已经从聚集,然后匹配和收集mutualContactEvents,然后结合集合)。

前提是你的最终名单是地图对象的列表,并且created_at日期是地图的属性,可以使用apoc.coll.sortMaps()APOC Procedures做你的排序。

© www.soinside.com 2019 - 2024. All rights reserved.