mongodb 中未知键的查询

Raf*_*UBI 2 mongodb mongodb-query aggregation-framework

我有一个包含以下文档的集合:

{   
   map:{
     key1:value1,
     key2:value2, 
     ....
    }
}
Run Code Online (Sandbox Code Playgroud)

我想仅根据地图值过滤文档,而不管键,像map.*之类的东西等于某个值。可以这样做吗?

使用的MongoDB版本是3.4

Ash*_*shh 6

您可以尝试使用以下聚合$objectToArray$arrayToObject聚合运算符

db.collection.aggregate([
  { "$project": { "map": { "$objectToArray": "$map" }}},
  { "$match": { "map.v": "value1" }},
  { "$project": { "map": { "$arrayToObject": "$map" }}}
])
Run Code Online (Sandbox Code Playgroud)