所以我和Mongo一直待在那里,而不必做任何复杂的事情。但现在我反对某事。
我有一个Publisher模型和一个User模型。
我正在构建一个管理员表,我需要向所有发布者及其关注者数量显示。
显然我不能遍历每个发布者并在那里运行mongo查询,那么我应该采取什么方法?
Collection 1 Users
{
id: 1,
name: 'fred',
following: [1,2,3,4],
},{
id: 2,
name: 'andy',
following: [1,2]
},{
id: 3,
name: 'stephen',
following: [1]
}
集合2出版商的期望输出
{
publisherId: 1,
numberOfFollowers: 3
},{
publisherId: 2,
numberOfFollowers: 2
},{
publisherId: 3,
numberOfFollowers: 1
}
答案 0 :(得分:0)
根据数据大小,Map Reduce策略可以比聚合框架慢一点,速度更快。 MapReduce将在单独的线程中运行JavaScript,并使用您提供的代码发出和减少文档的某些部分,以便在某些字段上进行聚合。您当然可以将练习视为聚合在每个“fieldValue”上。聚合框架也可以做到这一点但速度要快得多,因为聚合将在C ++中在服务器上运行,而不是在单独的JavaScript线程中运行。 还
MongoDB聚合管道由阶段组成。每个阶段 在文档通过管道时转换文档。管道 阶段不需要为每个输入生成一个输出文档 文献;例如,某些阶段可能生成新文档或过滤掉 文档。管道阶段可以在管道中多次出现。
更多阅读:Is Mongodb Aggregation framework faster than map/reduce?
在你的例子中,你走了: