2013-08-20 5 views
1

У меня есть этот массив с несколькими подмассивов:MongoDB запрашивающие вспомогательный массив

> db.alumnos111.findOne({curp:'AELJ951211MASCPN04'}) 
{ 
     "_id" : ObjectId("520d5440bee9577c283542c3"), 
     "nocontrol" : "10301051680201", 
     "nombre" : "JANETTE ARACELI", 
     "paterno" : "ACERO", 
     "materno" : "LOPEZ", 
     "curp" : "AELJ951211MASCPN04", 
     "generacion" : "2010-2013", 
     "carrera" : "INFORMÁTICA", 
     "clv_centro" : "01DCT0001F", 
     "estado" : "AGUASCALIENTES", 
     "plantel" : "CBTIS NO. 168", 
     "id_plantel" : "513", 
     "materias" : [ 
       { 
         "semestre" : "4", 
         "nombre_asignatra" : "ECOLOGÍA", 
         "grupo" : "4A", 
         "turno1" : "2001", 
         "parcial1" : "10", 
         "parcial2" : "9", 
         "parcial3" : "9", 
         "calificacion" : "9", 
         "periodo" : "SEMESTRAL 2 - 2011", 
         "id_periodo" : "111", 
         "id_plangpo" : "14", 
         "id_materia" : "4529" 
       }, 
       { 
         "semestre" : "4", 
         "nombre_asignatra" : "FÍSICA I", 
         "grupo" : "4A", 
         "turno1" : "2001", 
         "parcial1" : "8", 
         "parcial2" : "10", 
         "parcial3" : "10", 
         "calificacion" : "9", 
         "periodo" : "SEMESTRAL 2 - 2011", 
         "id_periodo" : "111", 
         "id_plangpo" : "14", 
         "id_materia" : "4530" 
       },   
       { 
         "semestre" : "4", 
         "nombre_asignatra" : "INGLÉS IV", 
         "grupo" : "4A", 
         "turno1" : "2001", 
         "parcial1" : "8", 
         "parcial2" : "10", 
         "parcial3" : "9", 
         "calificacion" : "9", 
         "periodo" : "SEMESTRAL 2 - 2011", 
         "id_periodo" : "111", 
         "id_plangpo" : "14", 
         "id_materia" : "4531" 
       },   

     ] 
} 

Как следует фильтровать подмассив (ы) {"materias.id_materia" : '$in' ("4531",'4530'),'parcial3':10} текущего _id?

Любая помощь по php db->find или JavaScript была бы полезна.

ответ

2

Ваш запрос должен выглядеть примерно так

db.alumnos111.find ({ "materias.id_materia": {$ в: [ "1234", "5678"]}})

для фильтрации из документов ж/id_materia = "1234" ИЛИ id_materia = "5678"

Этот пример будет выполнен Javascript прямо в Монго оболочки

2

Вы также можете попробовать это:

db.alumnos111.find({ _id: id }, { materias: { $elemMatch: { id_materia: $in: [ "4531","4530" ], parcial3: 10} } 
+0

Спасибо за все ответы, последний сделал трюк, хотя $ elemMatch in mongo <2.2 не работает вообще хорошо. Мне нужно было перейти на версию 2.4.5 –

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