sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB consulta EN matriz de objeto

Esto no se puede hacer con una simple consulta. Tendrá que pasar por encima de employee.departments y para cada iteración agregar su departments_id a una matriz. Esta matriz la puedes usar en tu segunda línea. Es mejor hacerlo en el idioma que elijas.

Para hacer esto más fácil, tendrás que cambiar tu esquema. Una opción es almacenar la información del departamento en el registro del empleado, pero en su caso estaría duplicando una gran cantidad de datos.

En su lugar, sugeriría que cada departamento contenga una lista con las identificaciones de los empleados y las fechas como esta:

{
        "_id" : ObjectId("4f9643957f8b9a3f0a000004"),
        "dept_name" : "Marketing",
        "managers" : [
        ]
        "employees" : [
            {
                    "employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
                    "from_date" : "1990-01-03",
                    "to_date" : "1990-01-15"
            }
        ]
}

En ese caso, puede simplemente ejecutar:

db.departments.find( { "employees.employee_id": ObjectId("some_id") } );