MongoDB Join
创建于 2024-12-03 /
25
字体:
[默认]
[大]
[更大]
连接集合
MongoDB 不是关系数据库,但可以使用 $lookup
执行左外部联接。
$lookup
允许您指定要加入当前集合的集合,以及应该匹配的字段。
假如有一个 "orders" 集合和一个 "products" 集合:
orders
[{ _id: 1, product_id: 154, status: 1 }
]
products
[{ _id: 154, name: 'Chocolate Heaven' },
{ _id: 155, name: 'Tasty Lemons' },
{ _id: 156, name: 'Vanilla Dreams' }
]
实例
将匹配的 "products" 的文档加入 "orders" 集合:
var MongoClient = require('mongodb').MongoClient;var url = "mongodb://127.0.0.1:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection('orders').aggregate([
{ $lookup:
{
from: 'products',
localField: 'product_id',
foreignField: '_id',
as: 'orderdetails'
}
}
]).toArray(function(err, res) {
if (err) throw err;
console.log(JSON.stringify(res));
db.close();
});
}); 运行实例 »
将上述代码保存在名为 "demo_mongodb_join.js" 的文件中,然后运行该文件:
运行 "demo_mongodb_join.js"
C:UsersYour Name>node demo_mongodb_join.js返回结果:
[{ "_id": 1, "product_id": 154, "status": 1, "orderdetails": [
{ "_id": 154, "name": "Chocolate Heaven" } ]
}
]
从上面的结果可以看出,products 集合中的匹配文档作为数组包含在 orders 集合中。
0 人点赞过