Node.js MongoDB 关联
关联集合
MongoDB 不是关系数据库,但可以使用 $lookup 执行左外关联(left outer join)。
$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([<strong> { $lookup:{from: 'products',localField: 'product_id',foreignField: '_id',as: 'orderdetails'}}</strong> ]).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 集合中。