我在我的应用程序不同的事件以下集合,有我的查询和业务逻辑,让我单独的不同类型的事件到单独的收集的一些事情:
注:收藏有返回不同的节点/ 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个采集。是否有可能还是我没有看错你不能够与不同的节点合并的集合?
绝对有可能,你应该只能够使用两个集合之间的+
操作:
WITH COLLECT(distinct contactEvents) + collect(distinct mutualContactEvents) as allEvents
...
这就是说,你可能应该与每个单独而不是一次性(匹配处理和收集contactEvents,请确保您有不同的起始节点,如果你没有它已经从聚集,然后匹配和收集mutualContactEvents,然后结合集合)。
前提是你的最终名单是地图对象的列表,并且created_at
日期是地图的属性,可以使用apoc.coll.sortMaps()从APOC Procedures做你的排序。