当我查询这个
const pendingOfThisShop = await ShopProfile.findOne({ shop: req.shop.id, "shopsAffiliate.status":"pending" },{ shopsAffiliate: 1, _id: 0 }
我得到这样的物体
{
"shopsAffiliate": [
{
"status": "approved",
"_id": "5db315a6de255a4444b0987b",
"affiliateId": "5db31263a362ed4ed84c7ad5"
},
{
"status": "pending",
"_id": "5db315c5de255a4444b0987d",
"affiliateId": "5db2b4713db4101e48836f0a"
}
]}
我同时获得状态:“已批准”和状态:“待处理”。我只想在shopAffiliate数组中获得状态为“待处理”的那些对象。我该怎么办?
我同时获得状态:“已批准”和状态:“待处理”
您的查询返回了预期的结果。
shopsAffiliate
是一组嵌套文档。shopsAffiliate
本身是ShopProfile
集合内文档的一部分。您的查询将检查是否ShopProfile
满足以下两个条件的任何文档
shop: req.shop.id
"shopsAffiliate.status":"pending"
当找到任何符合上述两个条件的文档时,它将返回整个文档。不在乎shopsAffiliate
匹配文件数组中是否有其他文件具有pending
状态,它只需要在shopsAffiliate
具有pending
状态的数组中找到至少1个文件,一旦找到一个,就返回整个文件。
我只想在shopAffiliate数组中获得状态为“待处理”的那些对象。我该怎么办?
您可以使用聚合操作获得所需的结果
const pendingOfThisShop = await ShopProfile.aggregate([
{
$match: {
shop: req.shop.id,
"shopsAffiliate.status": "pending"
}
},
{
$unwind: "$shopsAffiliate"
},
{
$match: { "shopsAffiliate.status": "pending" }
}
]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句