【发布时间】:2021-08-24 21:47:27
【问题描述】:
我有这样的文件列表
"Location_id": "60b53d92ccb1483964da45f9",
"SensorIdentifier": "CCCCCCCCCCCCCCCC",
"SensorType": "Temperature",
"status": true,
"data": [
{
"temperature": 22.5,
"humidite": 38.2,
"batterie": 50,
"time": 1623083627736,
"date": "7-6-2021"
},
我想按日期过滤它们,例如我想通过过滤数据数组中的子文档来获取日期在 2021 年 6 月 6 日和 2021 年 7 月 6 日之间的文档, 请注意,日期字段是字符串,现在这是我的解决方案:
{
"$match": {
"$expr": {
"$and": [
{
"$gte": [
"$date",
{
"$dateFromString": {
"dateString": "4-6-2021",
"format": "%m-%d-%Y"
}
}
]
},
{
"$lte": [
"$date",
{
"$dateFromString": {
"dateString": "7-6-2021",
"format": "%m-%d-%Y"
}
}
]
}
]
}
}
},
【问题讨论】:
-
您想通过
creationDate属性或data数组中的date属性过滤文档吗? -
是的,数据数组中的日期属性
-
您是要过滤
data数组中的所有子文档,还是要过滤在data数组中至少有一项在两个日期之间的所有文档? -
感谢回复我的帖子,是的,我想过滤数据数组中的所有子文档
-
那个
time字段看起来是一个与字符串日期匹配的纪元时间戳?如果是这种情况,那么按该值进行过滤的开销将大大减少。
标签: mongodb date aggregation-framework