在MongoDB中有效地查询多维对象数组

时间:2016-11-23 22:08:36

标签: mongodb

我的文档具有以下结构:

{
    "somekey1": "somevalue1",
    "data" : [
        [
            {
                "value" : 0.807689530228178,
                "unit" : "mL"
            },
            {
                "value" : 0.7392892800962352,
                "unit" : "mL"
            },
        ],
        [
            {
                "value" : 0.8314139708574444,
                "unit" : "mL"
            },
            {
                "value" : 0.09766834482756892,
                "unit" : "mL"
            }
        ],
        [
            {
                "value" : 0.3821786847386669,
                "unit" : "mL"
            },
            {
                "value" : 0.18408410591658442,
                "unit" : "mL"
            }
        ]
   ]
}

返回具有特定范围值的所有值/单位对象的最有效方法是什么? (例如> 0.7?)尝试搜索但没有提出任何有用的信息。可以通过单个查找或聚合操作来完成吗?

1 个答案:

答案 0 :(得分:1)

您可以使用聚合来执行此操作:

db.collection.aggregate([{
  $unwind: '$data',
}, {
  $unwind: '$data',
}, {
  $match: {
    'data.value': {
      $gt: 0.7
    }
  }
}, {
  $project: {
    _id: 0,
    value: "$data.value",
    unit: "$data.unit",
  },
}])