跨集合聚合

2024-03-28 10:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我继承了一个mongo模式,这个模式目前对我来说非常陌生,因为它包含许多集合,我相信这些集合可以很容易地被整合,并且在这个过程中可以增加mongo的聚合/MapReduce特性的使用。你知道吗

基本设置如下:

12+个系列。所有集合都有可以跨集合(如userId、sessionId和appId)进行比较的id。这些集合当前基于分类数据和分析事件上下文中每个集合内的可自定义属性进行分离。其中一个密钥集合包含一个常规用户配置文件,该配置文件根据传递到其他集合的参数进行更新。你知道吗

我经常需要跨集合聚合值来查看详细信息,例如自登录以来的用户会话、自上次会话以来的时间、自第一次会话以来的时间、用户在应用程序中的活动程度、用户执行特定事件的时间有多长?所有这些都涉及到跨多个事件集合和用户集合的聚合。你知道吗

我还没有找到一个足够的方法来“加入”用户ID跨集合的规模。任何关于重新构造模式或聚合函数以使其更快的建议都将不胜感激。你知道吗


Tags: 用户id过程mongo配置文件时间模式事件
1条回答
网友
1楼 · 发布于 2024-03-28 10:30:00

正如您所提到的,不可能在多个集合上执行聚合管道。因此,您必须在多个操作中执行,并获取每个结果,将其放入一个集合中,然后在此“工作集合”上执行另一个聚合/查询。你知道吗

在2.2和2.4中,您必须在应用程序代码中手动完成这项工作,但在2.6中,您可以在agregation本身中完成这项工作。你知道吗

在MongoDB 2.6中,一个新的操作符“$out”被添加到聚合框架中,以帮助您执行此类操作。您可以在这里找到有关此运算符的信息:http://docs.mongodb.org/master/reference/operator/aggregation/out/

相关问题 更多 >