我正在尝试使用mongo聚合框架编写查询。 我要实现的是选择一个月前所有货物已交付的订单。
目前,我可以选择至少一个月前已交付“至少一件”的订单。
这就是我所拥有的:
User-Agent
如何更改我的查询,以仅选择一个多月前已交付所有货物的订单?
答案 0 :(得分:0)
您可以使用$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") ] }
]
}
}
}
}
}
}
])