首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在寻找一种在MongoDB中组合两个集合的有效解决方案

我正在寻找一种在MongoDB中组合两个集合的有效解决方案
EN

Stack Overflow用户
提问于 2016-04-21 00:12:29
回答 1查看 39关注 0票数 1

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

Collection1:

代码语言:javascript
复制
{
    "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"
  }

Collection2:

代码语言:javascript
复制
{
    "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"
  }

对于每个适当的文档,我需要将"material_photo_name“从collection2转换为collection1 ( collection2中的material_id与collection1中的id匹配)……有没有一种方法可以在不手动重写数据库的情况下做到这一点?数以千计的collection2文档和数百个collection1文档...注意:每个值都是唯一的,所以简单的update()不起作用。

EN

回答 1

Stack Overflow用户

发布于 2016-04-21 01:43:48

您必须编写一个迁移脚本。

您可以使用mongo shell轻松完成此操作。它看起来像这样:

代码语言:javascript
复制
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);
});

如果此任务是开发项目的一部分,则建议使用迁移框架(例如mongo-migrate)。有多种语言的迁移框架。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36749528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档