我有這個 Event 陣列,但不知道如何查詢“guests”嵌套陣列并做兩件事。
計算客人的數量
計算出席的客人人數(標記為“Y”)
{ _id: new ObjectId('1'), name: event1, guests: [ { phone: 12222222222, _id: new ObjectId, attended: 'Y' }, { phone: 12344466666, _id: new ObjectId, attended: 'Y' }, { phone: 11234567890, _id: new ObjectId, attended: }, { phone: 14443332222, _id: new ObjectId, attended: 'Y' }, { phone: 19090909090, _id: new ObjectId attended: } ], }, { _id: new ObjectId('2'), name: event2, guests: [ { phone: 11111111111, _id: new ObjectId, attended: }, { phone: 12222222222, _id: new ObjectId, attended: 'Y' }, { phone: 133333333333, _id: new ObjectId, attended: 'Y' } ], },
我下面的代碼是第 20 次迭代,但沒有更接近。
const event = await Event.findById(req.params.id);
uj5u.com熱心網友回復:
對于 MongoDB 查詢,您可以$size用于計算陣列欄位的大小并$filter過濾與投影中的條件匹配的特定檔案。
db.collection.find({
_id: "1"
},
{
_id: 1,
name: 1,
guests: 1,
totalGuests: {
$size: "$guests"
},
attendedGuests: {
$size: {
"$filter": {
input: "$guests",
cond: {
$eq: [
"$$this.attended",
"Y"
]
}
}
}
}
})
示例 Mongo Playground
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369355.html
標籤:javascript MongoDB 猫鼬
