现在我得到两个集合:coll01和coll02.
而coll01的结构是这样的:
{
id: 01,
name: "xxx",
age: 30
}
Run Code Online (Sandbox Code Playgroud)
和coll02的结构如下:
{
id: 01,
name: "XYZ"
gender: "male"
}
Run Code Online (Sandbox Code Playgroud)
两个集合中的两个id字段都是索引.这两个集合中的文档数量是相同的.
我想在传统SQL中做的是:
update coll01, coll02
set coll01.name = coll02.name
where coll01.id = coll02.id
Run Code Online (Sandbox Code Playgroud)
Sha*_*had 24
Mongodb不是关系数据库,不支持join.所以,你应该想一想,你真的需要mongodb用于你的目的吗?
更新解决方案:您可以从coll01循环更新每个文档:
db.coll01.find().forEach(function (doc1) {
var doc2 = db.coll02.findOne({ id: doc1.id }, { name: 1 });
if (doc2 != null) {
doc1.name = doc2.name;
db.coll01.save(doc1);
}
});
Run Code Online (Sandbox Code Playgroud)
集合中的id字段索引coll02将减少find()循环内的操作执行时间.另外,请参阅服务器端JavaScript执行:通过服务器上的mongo shell实例运行.js文件
| 归档时间: |
|
| 查看次数: |
15673 次 |
| 最近记录: |