嵌套Json数组中的Mongo查询

时间:2018-09-18 08:02:20

标签: mongodb mongodb-query

我的收藏集中的文档如下:

{
   "_id":"<uuid>",
   "tests":[
      {
         "min":5,
         "max":20
      },
      {
         "min":15,
         "max":35
      }
   ]
}

现在,我想找到tests中所有的min >= 5

db.coll.aggregate([
  { $match: { 'tests.min': {$gte : 5}} }, 
  { '$unwind': "$tests" }
]);

以上查询以某种方式未返回正确的结果。

1 个答案:

答案 0 :(得分:1)

您无需为此编写汇总查询。为此,请使用$elemMatch运算符。您的查询将如下所示

db.coll.find({
    tests: {
        $elemMatch: {
            min: {
                $gte: 5
            }
        }
    }
})

以上查询将返回所需结果。 有关更多详细信息,请访问 $elemMatch (query)