【问题标题】:Mongodb how to merge n collectionsMongodb如何合并n个集合
【发布时间】:2017-05-17 14:19:19
【问题描述】:

我有需要合并的 n 集合 - 即将文档从它们复制到新的集合中或附加到“目标”集合中。我如何在mongodb中做到这一点?

【问题讨论】:

  • copyto() 循环
  • @AlexBlex 这已被弃用。另请查看warning
  • @BogdanKobylinsky 这个问题已经超过 6 年了,我现在正在寻找一些东西(希望更容易一些)。这应该是一个简单的任务不是吗?我在这两个集合中都有很多文档。
  • 它仍然有效。如果全局锁有问题,需要自己编写复制器来解决可能的冲突。

标签: java mongodb mongodb-query aggregation-framework spring-data-mongodb


【解决方案1】:

使用mapReduce复制按_id分组的文档:

var map = function(){
    emit(this._id, this);
};
var reduce = function(id, docs){
    // this function will be invoked only if there are more than 1 document with the same `_id`
    // resolve the conflict, e.g. return the first document, ignore everything else:
    return docs[0]; 
};

['collection1', 'collection2', 'collection3'].forEach(function(collection){
    db[collection].mapReduce(map, reduce, {out: {reduce: 'v', nonAtomic: true}});
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2015-02-17
    • 2015-07-11
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多