Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
我正在寻找一个有效的解决方案,在MongoDB中合并两个集合_Mongodb - Fatal编程技术网

我正在寻找一个有效的解决方案,在MongoDB中合并两个集合

我正在寻找一个有效的解决方案,在MongoDB中合并两个集合,mongodb,Mongodb,我在MongoDB中有一个数据库,包含两个集合: 收藏1: { "id": "675", "material_category_id": "35", "material_name": "name", "material_original_name": "Name", "material_other_names": "", "material_description": "Stuff about material", "material_on

我在MongoDB中有一个数据库,包含两个集合:

收藏1:

{
    "id": "675",
    "material_category_id": "35",
    "material_name": "name",
    "material_original_name": "Name",
    "material_other_names": "",
    "material_description": "Stuff about material",
    "material_online_id": null,
    "material_country_of_origin": "243",
    "main_color": "9",
    "page_title": "Page Title",
    "pattern": "0",
    "last_update": "2015-06-22 13:59:47"
  }
收藏2:

{
    "id": "3852",
    "material_id": "675",
    "material_photo_name": "stuff.jpg",
    "original_name": "otherstuff.jpg",
    "visible": "1",
    "uploaded_at": "2015-11-16 05:27:00",
    "thumb": "0"
  }
我需要为每个适当的文档(collection2中的物料id与collection1中的id匹配)将“物料\照片\名称”从collection2传输到collection1。。。有没有一种不需要手动重写数据库的方法?收藏2中有成千上万的文档,收藏1中有数百个。。。
注意:每个值都是唯一的,因此简单的update()将不起作用。

您必须编写迁移脚本

您可以使用。它看起来像这样:

mongo
use yourDB
db.Collection1.find().forEach(function(doc1){
  var doc2 = db.Collection2.findOne({material_id: doc1.id});
  doc1.material_photo_name = doc2.material_photo_name;
  db.Collection1.save(doc1);
});
如果此任务是开发项目的一部分,则建议使用迁移框架(例如)。有多种语言的迁移框架