我想在聚合中像这样过滤。下面是猫鼬查询的示例。我想在聚合中做同样的事情。我想做的是获取 2016-06-01T22:52:46Z 和 2016-06-02T22:52:46Z 之间的所有测量值以及其他值
Measurement
.find({})
.or([{
'date': {
'$gte': ISODate('2016-06-01T22:52:46Z'),
'$lte': ISODate('2016-06-02T22:52:46Z')
}
}, {
'date': {
'$gte': ISODate('2016-06-10T22:52:46Z'),
'$lte': ISODate('2016-06-11T22:52:46Z')
}
}, {
'date': {
'$gte': ISODate('2016-06-14T22:52:46Z'),
'$lte': ISODate('2016-06-15T22:52:46Z')
}
}, {
'date': {
'$gte': ISODate('2016-06-26T22:52:46Z'),
'$lte': ISODate('2016-06-27T22:52:46Z')
}
}])
.exec();
这是我尝试过的,但它没有做同样的工作。IDE说配音键"日期"
db.measurements.aggregate([{
$match: {
$or: [{
date: {
'$gte': ISODate('2016-06-01T22:52:46Z'),
'$lte': ISODate('2016-06-02T22:52:46Z')
},
date: {
'$gte': ISODate('2016-06-10T22:52:46Z'),
'$lte': ISODate('2016-06-11T22:52:46Z')
},
date: {
'$gte': ISODate('2016-06-14T22:52:46Z'),
'$lte': ISODate('2016-06-15T22:52:46Z')
},
date: {
'$gte': ISODate('2016-06-26T22:52:46Z'),
'$lte': ISODate('2016-06-27T22:52:46Z')
}
}]
}
}]);
你有一些数据的例子吗?试试这个代码:
db.measurements.aggregate([{
$match: {
$or: [
{ date: {
'$gte': ISODate('2016-06-01T22:52:46Z'),
'$lte': ISODate('2016-06-02T22:52:46Z')
}},
{ date: {
'$gte': ISODate('2016-06-10T22:52:46Z'),
'$lte': ISODate('2016-06-11T22:52:46Z')
}},
{ date: {
'$gte': ISODate('2016-06-14T22:52:46Z'),
'$lte': ISODate('2016-06-15T22:52:46Z')
}},
{ date: {
'$gte': ISODate('2016-06-26T22:52:46Z'),
'$lte': ISODate('2016-06-27T22:52:46Z')
}}
]
}
}]);