【发布时间】:2019-02-24 00:30:34
【问题描述】:
router.get('/productSelect', (req, res, next) =>{
productSchema.aggregate([
{ $lookup:
{
from: 'supplierSchema',
localField: 'supplierId',
foreignField: '_id',
as: 'supplier'
}
}
], (err, productSchema) =>{
if(err) res.json(err);
else res.json(productSchema);
});
});
我想从集合中获取数据
[
{
"_id": "5ba26ff33318b51e20a80fb3",
"productExist": true,
"productName": "Anything",
"supplierId": "5b9d25064dcf2327b449ae1b",
"brandId": "5b9d162a316e8d2660f26393",
"categoryId": "5ba2509a6367372568b1ce6d",
"productPrice": 222,
"productQuantity": 320,
"productMax": 3,
"productMin": 4,
"productTimeStamp": "2018-09-19T15:49:07.177Z",
"__v": 0
}
]
并将supplierId替换为collection中的supplierName
[
{
"_id": "5b9d25064dcf2327b449ae1b",
"supplierExist": true,
"supplierName": "NBA World Wide",
"supplierStatus": "Available",
"supplierTimeStamp": "2018-09-15T15:28:06.971Z",
"__v": 0
}
]
【问题讨论】:
-
以上代码有什么问题?
-
可能是您的收藏名称不正确。你使用的是猫鼬还是 mongodb native?
-
好的,然后在上面的代码
from: "supplierschemas" -
您的
supplierId类型是产品架构中的字符串,这就是它不获取数据的原因。您需要将其保留为 objectId...顺便说一句,您的 mongodb 版本是什么? -
是的,您可以使用多个
$lookup阶段
标签: node.js mongodb express aggregation-framework