2016-11-23 3 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, "единица": "мл" }, { "значение": 0.7392892800962352, "единица": "мл" }, { «значение ": 0,8314139708574444, " единица ":" mL " } }' –

ответ

1

Вы можете использовать агрегацию, чтобы сделать это:

db.collection.aggregate([{ 
    $unwind: '$data', 
}, { 
    $unwind: '$data', 
}, { 
    $match: { 
    'data.value': { 
     $gt: 0.7 
    } 
    } 
}, { 
    $project: { 
    _id: 0, 
    value: "$data.value", 
    unit: "$data.unit", 
    }, 
}]) 
Смежные вопросы