MongoDB - 在完整路径的中间查询未知字段

时间:2018-01-25 09:35:13

标签: mongodb mongodb-query

在完整路径中间使用未知字段实施查询的正确方法是什么(例如在查询中使用星号来获取值'已通过'特定日期的所有国家/地区)? 例如:" countries_info。*。1_1_2018.allEvents.passed"?

当我使用elasticsearch时,我可以在查询字符串的中间添加星号,但是如何在MongoDB中添加呢?

由于

考虑下一个对象:

Header always unset Content-Security-Policy

1 个答案:

答案 0 :(得分:0)

您可以使用objectToArray将对象转换为元素数组{k: <key name>, v: <value>},这样您就可以忽略k并仅使用v。在您的特定情况下,管道可以是这样的:

db.collection.aggregate([
    { $unwind: "$countries_info" },
    { $project: { 
        _id:0, 
        countries_info: { $arrayElemAt: [ {$objectToArray: "$countries_info"}, 0 ] } 
    } },    
    { $project: { passed: "$countries_info.v.1_1_2018.allEvents.passed" } }
])