2016-11-23 49 views
0

我有具有以下結構的文件:高效查詢對象的多維數組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?)嘗試搜索,但沒有提出任何有用的東西。它可以通過單個查找或聚合操作完成嗎?

+0

什麼是您預期的結果?請舉一個例子 – Khang

+0

'{ 「值」:0.807689530228178, 「單元」: 「mL」 是 }, { 「值」:0.7392892800962352, 「單元」: 「mL」 是 }, { 「值「:0.8314139708574444, 」unit「:」mL「 } }'' –

回答

1

你可以使用聚合做到這一點:

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