【发布时间】:2020-10-29 16:01:24
【问题描述】:
我有类似这样的数据
{
"_id": ObjectId("52ed12c144aecc4bf004d0b6"),
"active": true,
"name": "woslo",
"specialDays": [
{
"_id": ObjectId("5f0576196198a715b0a72c14")
"status": true
"date": 2020-07-08T04:00:00.000+00:00
},
{
"_id": ObjectId("5f05a3726198a715b0a72c94")
"status": false
"date": 2020-07-09T04:00:00.000+00:00
}
]
}
我想使用这个查询来获取记录
db.serviceProviders.aggregate([ { $match: { specialDays: { $elemMatch: { $or: [ { $and: [ { date: model.date // 2020-07-09T06:00:00.000Z }, { status: true } ] }, { date: { $ne: model.date //2020-07-09T06:00:00.000Z } } ] } } } } ]);
场景是:如果 date 存在于 specialDays 数组中并且状态应该为 true ,或者 date 不应该在 specialDays 对象的数组中,则获取此记录。 但是每次它获取高于甚至状态的相同记录时为假或日期存在于数组中。 请您帮我解决一下,我用 ISODate('2020-07-08') 在 Mongo compass 聚合中尝试了很多查询,但仍然无法正常工作。 谢谢 快乐编码。
【问题讨论】:
标签: javascript mongodb date mongoose aggregation-framework