我有一个收藏,其中包含以下文件:
{
map:{
key1:value1,
key2:value2,
....
}
}
,并且我只想根据地图值过滤文档,而无论键如何,诸如map。*之类的值都等于某个值。可以这样做吗?
使用的MongoDB版本是3.4
答案 0 :(得分:1)
您可以使用$objectToArray
和$arrayToObject
聚合运算符尝试以下聚合
db.collection.aggregate([
{ "$project": { "map": { "$objectToArray": "$map" }}},
{ "$match": { "map.v": "value1" }},
{ "$project": { "map": { "$arrayToObject": "$map" }}}
])