2013-08-20 94 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" 
       },   

     ] 
} 

我应该如何筛选子阵列(一个或多个)当前_id{"materias.id_materia" : '$in' ("4531",'4530'),'parcial3':10}

任何帮助php db->find或JavaScript将有所帮助。

回答

2

你的查询应该看起来像这样

db.alumnos111.find({ “materias.id_materia”:在{$: “1234”, “5678”]}})

过滤出的文档W/id_materia = “1234” 或id_materia = “5678”

直在蒙戈外壳这个例子将JavaScript的执行

2

你也可以试试这个:

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

谢谢你所有的答案,最后一个做到了这个诀窍,虽然mongo <2.2中的$ elemMatch并不能很好地工作。我需要升级到2.4.5版本 –