Mongodb 如何将聚合结果存储到另一个数据库中

Mongodb 如何将聚合结果存储到另一个数据库中,mongodb,Mongodb,我可以将聚合结果存储到同一数据库中的另一个集合中 但是如何将结果存储到另一个数据库中 这用于将集合复制到另一个数据库: use test1; db["user_data"].find().forEach( function(d){ db.getSiblingDB("test2")['user_data'].insert(d); }); 聚合函数: pipeline = [ { '$group': { '_id': { '$year': '$birt

我可以将聚合结果存储到同一数据库中的另一个集合中

但是如何将结果存储到另一个数据库中

这用于将集合复制到另一个数据库:

use test1;
db["user_data"].find().forEach(
  function(d){ db.getSiblingDB("test2")['user_data'].insert(d); 
});
聚合函数:

pipeline = [
  {
    '$group': {
      '_id': {
        '$year': '$birthday'
      },
      'count': {
        '$sum': 1
      }
    }
  }, {
    '$sort': {
      '_id': 1
    }
  }, {
    '$out': output_collection
  }
];
cur = db[source_collection].runCommand('aggregate', {
  pipeline: pipeline,
  allowDiskUse: true
});

运行到输出集合的聚合后,需要运行另一个命令,使用以下命令将集合克隆到另一个数据库:

db.runCommand({ 
    cloneCollection: "test.output_collection", 
    from: "mongodb.example.net:27017", 
    query: { active: true } 
})

上面复制了服务器上
mongodb.example.net
上的
test
数据库中的
output\u集合。该操作仅复制满足查询
{active:true}
的文档,但查询参数是可选的
cloneCollection
始终复制索引

启动
Mongo 4.2
,可以使用新的聚合运算符将聚合管道的结果写入另一个数据库中的指定集合:

use test1;
db["user_data"].find().forEach(
  function(d){ db.getSiblingDB("test2")['user_data'].insert(d); 
});
请注意,如果目标集合已包含记录,则会使用
$merge
运算符指定如何合并与现有记录冲突的插入记录