आप $map
का उपयोग कर सकते हैं प्रत्येक shipment
. के लिए अपनी शर्त लागू करने के लिए और फिर $allElementsTrue
का उपयोग करें अंदर $expr
यह जाँचने के लिए कि क्या वे सभी तत्व मेल खाते हैं:
db.shop_orders.aggregate([
{
$match: { shipments: { $exists: true, $ne: [] } }
},
{
$match: {
$expr: {
$allElementsTrue: {
$map: {
input: "$shipments",
as: "shipment",
in: {
$and: [
{ $eq: [ "$$shipment.status", "Delivered" ] },
{ $lte: [ "$$shipment.deliveredAt", new Date("2018-07-28") ] }
]
}
}
}
}
}
}
])