【问题标题】:mongodb querying sub arraymongodb查询子数组
【发布时间】:2013-08-20 00:55:02
【问题描述】:

我有这个包含多个子数组的数组:

> 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 的帮助都会有所帮助。

【问题讨论】:

    标签: php javascript arrays mongodb


    【解决方案1】:

    您的查询应该是这样的

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

    过滤掉带有 id_materia="1234" 或 id_materia="5678" 的文档

    这个例子是直接在 mongo shell 中执行的 javascript

    【讨论】:

      【解决方案2】:

      你也可以试试这个:

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

      【讨论】:

      • 感谢您的所有答案,最后一个成功了,尽管 mongo
      猜你喜欢
      • 2016-09-29
      • 2012-08-26
      • 1970-01-01
      • 2021-08-24
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多