在完整路径中间使用未知字段实施查询的正确方法是什么(例如在查询中使用星号来获取值'已通过'特定日期的所有国家/地区)? 例如:" countries_info。*。1_1_2018.allEvents.passed"?
当我使用elasticsearch时,我可以在查询字符串的中间添加星号,但是如何在MongoDB中添加呢?
由于
考虑下一个对象:
Header always unset Content-Security-Policy
答案 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" } }
])