$map
subRoom
. के लूप को पुनरावृत्त करने के लिए सरणी और in
आवश्यक फ़ील्ड वापस करने के लिए
$filter
notifications
. के लूप को पुनरावृत्त करने के लिए और $size
फ़िल्टर किए गए परिणाम से कुल तत्व प्राप्त करने के लिए
db.collection.find({ id: 1 },
{
_id: 0,
room: 1,
notRead: {
$size: {
$filter: {
input: "$notifications",
cond: {
$not: { $in: ["User1", "$$this.read"] }
}
}
}
},
"subRoom": {
$map: {
input: "$subRoom",
in: {
id: "$$this.id",
notRead: {
$size: {
$filter: {
input: "$$this.notifications",
cond: { $not: { $in: ["User1", "$$this.read"] } }
}
}
}
}
}
}
})
खेल का मैदान