2014-09-12 5 views
0

Я имею эту структуру данных в формате JSON:MongoDB объект в массиве в пределах массива

{ 
data : 
{ 
    fields_data : 
    [ 
    [ 
     { 
     key1 : val 
     }, 
     { 
     key1 : val 
     } 
    ], 
    [ 
     { 
     key2 : val 
     }, 
     { 
     key2 : val 
     } 
    ] 
] 
} 
} 

У меня трудное время, чтобы запросить это, я пытался использовать внутри и elemMatch другими способами, но без успеха.

один из запросов, которые я пробовал:

{ 
    "data.fields_data": { 
     $in: [{ 
      $in: [{ 
       $elemMatch: 
        { 
      $elemMatch : { 
         "key1": "random text" 
         } 
      } 
       }] 

     }] 
    } 
} 

Любые предложения?

ответ

0

Ну, вложенная $elemMatch должен работать здесь:

db.collection.find{ 
    'data.fields_data': { 
    $elemMatch: { 
     $elemMatch: { 
     key1: val 
     } 
    } 
    } 
} 

Но вы должны рассмотреть, чтобы избавиться от вложенного массива здесь. Например, вы могли бы использовать массив, если объекты вместо:

{ 
    data: { 
    fields_data: [{ 
     data: [ 
     { key1: val }, 
     { key1: val } 
     ]}, { 
     data: [ 
     { key2: val }, 
     { key2: val } 
     ]} 
    ] 
    } 
} 

Это позволит вам запрашивать документы, используя простую точечную нотацию:

{ 'data.fields_data.data.key1': val } 
+0

префекта! Спасибо. – user2288183

Смежные вопросы