MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Interrogazione MongoDB nell'array di oggetti

Questo non può essere fatto con una semplice query. Dovrai scorrere employee.departments e per ogni iterazione aggiungere il relativo departments_id a un array. Questo array puoi quindi usarlo nella tua seconda riga. È meglio farlo nella tua lingua preferita.

Per rendere tutto più semplice, dovrai cambiare il tuo schema. Un'opzione è archiviare le informazioni del reparto nel record del dipendente, ma nel tuo caso duplicheresti molti dati.

Suggerirei invece di fare in modo che ogni dipartimento contenga un elenco con ID e date dei dipendenti invece come questo:

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

In tal caso, puoi semplicemente eseguire:

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