我想将结果聚合并插入到现有集合中,而不删除该集合。文档似乎表明这不是直接可能的。我很难相信。
“map-reduce”功能具有“输出模式”,包括“merge”,它可以实现我的需求。我正在寻找相应的聚合等效方法。
新的$out
聚合阶段支持插入到集合中,但它会替换集合而不是更新它。如果我这样做,我需要(我认为)运行另一个map-reduce将其合并到另一个集合中,这似乎效率低下。
我有没有漏掉什么或者聚合功能确实缺少这个功能?
我使用聚合的输出将数据插入/合并到集合中:
db.coll2.insert(
db.coll1.aggregate([]).toArray()
)
最近版本(4.2)中提供了新功能,您可以使用聚合管道中的$merge运算符来实现此操作。它需要在管道中作为最后一个阶段。
{ $merge: { into: "myOutput", on: "_id", whenMatched: "replace", whenNotMatched: "insert" } }
http://docs.mongodb.org/manual/tutorial/perform-incremental-map-reduce/