MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consulta do MongoDB na matriz do objeto


Isso não pode ser feito com uma simples consulta. Você terá que fazer um loop sobre employees.departments e, para cada iteração, adicionar seu department_id a um array. Essa matriz você pode usar em sua segunda linha. Isso é algo melhor feito no idioma de sua escolha.

Para tornar isso mais fácil, você terá que alterar seu esquema. Uma opção é armazenar as informações do departamento no registro do funcionário, mas no seu caso você estaria duplicando muitos dados.

Em vez disso, sugiro que cada departamento contenha uma lista com IDs e datas de funcionários, assim:
{
        "_id" : ObjectId("4f9643957f8b9a3f0a000004"),
        "dept_name" : "Marketing",
        "managers" : [
        ]
        "employees" : [
            {
                    "employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
                    "from_date" : "1990-01-03",
                    "to_date" : "1990-01-15"
            }
        ]
}

Nesse caso, você pode simplesmente executar:
db.departments.find( { "employees.employee_id": ObjectId("some_id") } );