sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB fråga IN array av objekt

Detta kan inte göras med en enkel fråga. Du måste gå över anställda.avdelningar och för varje iteration lägga till dess departments_id till en array. Denna array kan du sedan använda i din andra rad. Detta är något som bäst görs på ditt val av språk.

För att göra detta enklare måste du ändra ditt schema. Ett alternativ är att lagra avdelningsinformationen i personalposten, men i ditt fall skulle du duplicera mycket data.

Jag skulle istället föreslå att varje avdelning innehåller en lista med personal-ID och datum istället så här:

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

I så fall kan du sedan helt enkelt köra:

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


  1. Introduktion av uppslagsdiagram i MongoDB

  2. Hur får man samlingslista i mongoose?

  3. MongoDB:Hur hittar jag med underdokument-ID?

  4. Vilken, om någon, av NoSQL-databaserna kan ge ström av *ändringar* till en frågeresultatuppsättning?