您可以使用aggregate
嘗試,如果你想獲得只具有isRead
場的通知是false
。
Model.User.aggregate([
{$match:{_id: userid}},
{$unwind:"$notification"},
{$match:{"notification.isRead": false}},
{$group:{_id:"$_id",notification:{ $addToSet: "$notification"}}}
]).exec(function (err, result) {
console.log(result);
res.send(result);
})
例如您的文檔,如:
{
"_id" : ObjectId("58454926668bde730a460e15"),
"notification" : [
{
"notification_id" : ObjectId("58454926668bde730a460e16"),
"isRead" : true
},
{
"notification_id" : ObjectId("58454926668bde730a460e17"),
"isRead" : true
},
{
"notification_id" : ObjectId("58454926668bde730a460e19"),
"isRead" : false
}
]
}
然後出去放會像:
{
"_id" : ObjectId("58454926668bde730a460e15"),
"notification" : [
{
"notification_id" : ObjectId("58454926668bde730a460e19"),
"isReady" : false
}
]
}
如果你想獲得的所有通知如果isRead
任何一個false
那麼你查詢正確只是檢查userid
是否存在於您通過的數據庫中,並且某些通知isRead
爲假。也可以使用$elemMatch
Model.User.find({
_id: userid
"notification":{ $elemMatch: { "isRead": false} }
}).exec(function (err, result) {
console.log(result);
res.send(result);
})
什麼是你的貓鼬版本在應用程序中使用? –
貓鼬版本4.6.1 –
查詢看起來正確,用戶ID是否正確_id? –