提问者:小点点

MongoDB搜索具有一系列键名的子文档?[重复]


我有一个数据库,其中包含表示时间序列测量的文档。

'value esMin'可以在范围0-

{
"timeStampHour" : ISODate("2019-02-28T12:00:00.000Z"),
"valuesMin" : {
    "0" : 20,
    "1" : 20,
    "2" : 22,
    "3" : 23,
    ....
    "54" : 32
}
}
{
"timeStampHour" : ISODate("2019-02-28T13:00:00.000Z"),
"valuesMin" : {
    "5" : 20,
    "10" : 25,
    "14" : 27,
    "15" : 30,
    ....
    "59" : 40
}
}

如何搜索任何“value esMin”字段包含值$gte 35的文档?

大致如下的东西:

db.getCollection('sensorData').find({
    'timeStampHour':{
        $elemMatch:{'valuesMin.*':{$gte: 35}}
    }
})

我的搜索似乎表明真正的“*”通配符是不可行的,但是如果我知道键总是在“0”和“59”之间,是否有解决办法?


共1个答案

匿名用户

这可以使用$object tToArray和$arrayToObject实现

db.q3.aggregate([
    {$project: {"valuesMin": {$objectToArray: "$valuesMin"}}},
    {$match:{"valuesMin.v": {$gte: 35}}},
    {$project: {"valuesMin": {$arrayToObject: "$valuesMin"}}}
])