নেস্টেড অ্যারে ফিল্টার করতে $filter এবং $cond ব্যবহার করুন। $filter নির্দিষ্ট কন্ডিশন অনুযায়ী অ্যারে এর সাবসেট রিটার্ন করে।
> db.demo725.insertOne({
"details": {
"userMessages": [
{ "Messages": [ { "Message": "Hello" }, { "Message": "How" }, { "Message": "are" } ] },
{ "Messages": [ { "Message": "Good" }, { "Message": "Bye" } ] },
{ "Messages": [ { "Message": "Hello" }, { "Message": "Bye" } ] }
]
}
});
এগremos কোয়েরি (Hello মেসেজ থাকা এলিমেন্ট ফিল্টার):
> db.demo725.aggregate([
{ $addFields: {
"details.userMessages": {
$filter: {
input: "$details.userMessages",
as: "out",
cond: {
$anyElementTrue: {
$map: {
input: "$$out.Messages",
in: { $gte: [ { $indexOfBytes: [ "$$this.Message", "Hello" ] }, 0 ] }
}
}
}
}
}
}}
]).pretty()
ফলাফল: শুধু "Hello" মেসেজ থাকা ডকুমেন্টগুলো রিটার্ন হয়েছে।