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

MongoDB forespørgsel IN array af objekt

Dette kan ikke gøres med en simpel forespørgsel. Du bliver nødt til at gå over medarbejdere.afdelinger og for hver iteration tilføje dens afdelings_id til et array. Dette array kan du derefter bruge i din anden linje. Dette er noget, der bedst gøres på dit valgte sprog.

For at gøre dette lettere, skal du ændre dit skema. En mulighed er at gemme afdelingsoplysningerne i medarbejderposten, men i dit tilfælde ville du duplikere en masse data.

Jeg vil i stedet foreslå, at hver afdeling indeholder en liste med medarbejder-id'er og datoer i stedet for sådan:

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

I så fald kan du så blot køre:

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


  1. embedmongo med reactivemongo-processen afsluttes ikke

  2. Er der en måde at automatisk opdage ny klynge node IP i Redis Cluster med salat

  3. Hvordan opdaterer jeg en specifik nøgle inde i et MongoDB-underdokument ved hjælp af Sails.js &Waterline?

  4. Mongos Installation/Opsætning i Elastic Beanstalk