以下是使用$lookup和find/populate进行数据查询和关联的示例代码:
$lookup示例:
db.orders.aggregate([
{
$lookup: {
from: "products",
localField: "productId",
foreignField: "_id",
as: "product"
}
}
])
上述代码将在orders集合中查找productId字段与products集合中的_id字段匹配的数据,并将匹配的结果合并到查询结果中。
find和populate示例:
const Order = require('./models/order');
const Product = require('./models/product');
// 使用find查询主集合数据
Order.find()
.then(orders => {
// 遍历主集合结果
orders.forEach(order => {
// 使用populate关联操作查询关联集合数据
Product.find({ _id: order.productId })
.then(products => {
// 将关联集合结果合并到主集合结果中
order.products = products;
})
});
});
上述代码将使用find查询主集合Order中的数据,并使用populate关联操作查询关联集合Product中的数据。然后将关联集合的数据合并到主集合的查询结果中。
需要注意的是,以上示例代码仅用于演示$lookup和find/populate的基本用法,实际使用时需要根据具体需求进行适当调整和优化。