如何将结果聚合并合并到集合中?

Joe*_*Joe 11 mongodb

我想聚合并将结果插入到现有集合中,而不删除该集合.文档似乎表明这不是直接可能的.我觉得很难相信.

map-reduce功能具有'输出模式',包括'merge',它可以满足我的需求.我正在寻找聚合的等价物.

$out聚合阶段支持插入集合,但它会替换集合而不是更新集合.如果我这样做,我会(我认为)必须运行另一个map-reduce将其合并到另一个集合中,这似乎效率低下.

我是否遗漏了某些内容,或者是聚合功能中缺少的功能?

小智 8

我使用聚合的输出来插入/合并到集合:

    db.coll2.insert(
      db.coll1.aggregate([]).toArray()
    )
Run Code Online (Sandbox Code Playgroud)


chk*_*chk 4

阅读文档非常准确地回答了这个问题。Atm mongo 无法做你想做的事。

$out 操作会在当前数据库中创建一个新集合(如果尚不存在)。在聚合完成之前,集合不可见。如果聚合失败,MongoDB 不会创建集合。

如果 $out 操作指定的集合已存在,则聚合完成后,$out 阶段会自动用新结果集合替换现有集合。$out 操作不会更改先前集合中存在的任何索引。如果聚合失败,$out 操作不会对先前的集合进行任何更改。