Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 合并mongodb上的两个集合_Json_Mongodb_Database - Fatal编程技术网

Json 合并mongodb上的两个集合

Json 合并mongodb上的两个集合,json,mongodb,database,Json,Mongodb,Database,我需要将两个集合合并为一个集合,但我只需要在第一个集合中不存在文档时才放置文档。我怎么做?最好的办法是什么? 我看到了一些关于Agegation和mapreduce的内容,但我不确定该使用什么。你能帮帮我吗?这是我想到的最简单的暴力手段 下面,users是要将文档从users2复制到的集合。我假设\u id是合并键 use test; db.users.insert({_id: 1, name: 'Mickey'}); db.users.insert({_id: 2, name: 'Minne

我需要将两个集合合并为一个集合,但我只需要在第一个集合中不存在文档时才放置文档。我怎么做?最好的办法是什么?
我看到了一些关于Agegation和mapreduce的内容,但我不确定该使用什么。你能帮帮我吗?

这是我想到的最简单的暴力手段

下面,
users
是要将文档从
users2
复制到的集合。我假设
\u id
是合并键

use test;

db.users.insert({_id: 1, name: 'Mickey'});
db.users.insert({_id: 2, name: 'Minney'});

db.users2.insert({_id: 1, name: 'Donald'});
db.users2.insert({_id: 2, name: 'Daisy'});
db.users2.insert({_id: 3, name: 'Pluto'});

var users2 = db.users2.find();
while (users2.hasNext()) {
  var u2 = users2.next();
  var u = db.users.findOne({'_id': u2._id});
  if (u == null) {
    db.users.insert(u2);
  }
}

米奇
米妮
将被保留,只有
冥王星
将被添加到
用户
我认为没有自动的方法。 假设有2个集合用于合并,c1和c2 您可以使用手动执行合并

db.c1.find().forEach(function(item) {
    db.c2.insert(item);
    db.c1.remove(item);
});
你应该注意这一点,因为mongo不支持多文档事务

请查看此问题