我的mongo查询有问题。我想在给定的时间内获取所有数据。例如。从2019-01-01到2019-01-10。但是我看到,即使一个元素匹配,条件mongo也会返回全部数据。
db.production.aggregate([
{
"$group": {
"_id": "$machine_name",
"array": {
"$push": {
"value": "$value",
"type": "$variable_name",
"date": {
"$dateFromString": {
"dateString": "$datetime_from",
"format": "%Y-%m-%d %H:%M:%S"
}
}
}
}
}
},
{
"$match": {
"$and": [
{
"array.date": {
"$gt": ISODate("2019-01-01T00:00:00Z")
}
},
{
"array.date": {
"$lt":ISODate("2019-01-02T23:59:59Z")
}
}
]
}
}
]);
它应该只返回给定时间段内的数据
答案 0 :(得分:0)
投影要查看的数据。例如,当我们使用查找查询时 db.collectionname.find({fieldname:'value'},{fieldname:1})
因此,这里第一个{}匹配,第二个{}仅投影该值。
在某些条件下,如果某些条件中不存在该值,则取决于您的模式,而在其他条件中,例如“ fieldname”:{$ exists:true}}则处于匹配条件。