使用用户首选项数据进行聚合
在本页面
数据模型
考虑一个假设的体育俱乐部,其数据库包含一个users集合,用于跟踪用户的加入日期,运动偏好,并将这些数据存储在类似于以下内容的文档中:
{
_id : “jane“,
joined : ISODate(“2011-03-02“),
likes : [“golf“, “racquetball“]
}
{
_id : “joe“,
joined : ISODate(“2012-07-02“),
likes : [“tennis“, “golf“, “swimming“]
}规范化和排序文档
以下操作以大写和字母 order 返回用户名。聚合包括users集合中所有文档的用户名。您可以这样做以规范化用户名以进行处理。
users集合中的所有文档都通过管道传递,该管道包含以下操作:
operator 按
name字段对结果进行排序。
聚合的结果类似于以下内容:
返回按月加入订单的用户名
以下聚合操作返回按其加入的月份排序的用户名。这种聚合可以帮助生成会员续订通知。
管道通过以下操作传递users集合中的所有文档:
$project operator:
创建两个新字段:
month_joined和name。从结果中抑制
id。除非明确禁止,否则aggregate()方法包含_id。
$sort operator 按
month_joined字段对结果进行排序。
该操作返回类似于以下内容的结果:
返回每月的联接总数
以下操作显示了一年中每个月加入的人数。您可以将此汇总数据用于招聘和营销策略。
管道通过以下操作传递users集合中的所有文档:
$project operator 创建一个名为
month_joined的新字段。
此聚合操作的结果类似于以下内容:
Return 五个 Common“喜欢”
以下聚合收集数据集中前五个最“喜欢”的活动。这种分析有助于规划和未来发展。
管道从users集合中的所有文档开始,并通过以下操作传递这些文档:
$unwind operator 分隔
likesarray 中的每个 value,并为 array 中的每个元素创建源文档的新 version。
[success] 例子
给出来自用户集合的以下文档:
$unwind运算符将创建下列文件:
聚合的结果类似于以下内容:
译者:李冠飞
校对:李冠飞
最后更新于