我有在陣列中包含日期的集合,例如:
datesArray: [{
start_date: Date,
end_date: Date
}]
我只想要滿足datesArray 的所有元素的那些集合。
我在聚合$match運算子中使用它,例如:
Model.aggregate([
{
$match: {
'datesArray.start_date': { $gte: new Date('11-01-21') },
'datesArray.end_date': { $lte: new Date('11-30-21') }
}
}
])
我嘗試使用$elemMatch但它至少匹配一個陣列元素。我也用$elemMatch嘗試了$all但沒有成功。
謝謝
uj5u.com熱心網友回復:
$mapdatesArray根據您的日期范圍匹配標準將您轉換為布爾陣列。$allElementsTrue對結果執行以獲得您想要的結果。
inputDate1并且inputDate2是您的輸入。隨時更新它們。
db.collection.aggregate([
{
"$addFields": {
"inputDate1": ISODate("2021-01-01"),
"inputDate2": ISODate("2021-12-31")
}
},
{
"$match": {
$expr: {
"$allElementsTrue": [
{
"$map": {
"input": "$datesArray",
"as": "d",
"in": {
$and: [
{
$gte: [
"$$d.start_date",
"$inputDate1"
]
},
{
$lte: [
"$$d.end_date",
"$inputDate2"
]
}
]
}
}
}
]
}
}
}
])
這是Mongo 游樂場供您參考。
uj5u.com熱心網友回復:
您可以簡單地反轉每個標準并使用$nor:
db.collection.aggregate([
{$match: {
$nor: [
{"datesArray.start_date": {$lt: ISODate("2021-11-01")}},
{"datesArray.end_date": {$gt: ISODate("2021-11-30")}}
]
}}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/390983.html
標籤:javascript 节点.js MongoDB 猫鼬 mongodb-查询
上一篇:在jesttestrunner中運行時貓鼬模型函式超時
下一篇:如何從陣列中找到最小值
