通过整个未知文档中的键和值在mongo中搜索

时间:2018-08-30 11:59:54

标签: mongodb mongodb-query

如何通过结构未知的文档中的键和值在mongo中进行搜索?

例如:

{ 
  "accounting" : [   
                 { "firstName" : "John",  
                   "lastName"  : "Doe",
                   "age"       : 23 },

                 { "firstName" : "Mary",  
                   "lastName"  : "Smith",
                    "age"      : 32 }
             ],                            
  "sales"      : [ 
                 { "firstName" : "Sally", 
                   "lastName"  : "Green",
                    "age"      : 27 },

                 { "firstName" : "Jim",   
                   "lastName"  : "Galley",
                   "age"       : 41 }
             ] 
} 

当我按“年龄”进行查询时,我想获得键龄如上的文档,以及具有年龄的文本值文档。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

尝试使用聚合框架:

db['01'].aggregate(
    [
        {
            $project: {
                root:{$objectToArray:"$$ROOT"}
            }
        },
        {
            $match: {
              $or:[
              {"root.v.age":23},
              {"root.v.age":"23"}
            ]
            }
        },
        {
            $replaceRoot: {
                newRoot: {$arrayToObject:"$root"}
            }
        },
    ],
);