Node.js MongoDB Join 连接
连接集合
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:\Users\Your Name>node demo_mongodb_join.js
返回结果:
[
{ "_id": 1, "product_id":
154, "status": 1, "orderdetails": [
{ "_id": 154, "name":
"Chocolate Heaven" } ]
}
]
从上面的结果可以看出,products 集合中的匹配文档作为数组包含在 orders 集合中。