sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB dotaz v poli objektu

To nelze provést jednoduchým dotazem. Budete muset procházet přes staff.departments a pro každou iteraci přidat jeho departments_id do pole. Toto pole pak můžete použít ve svém druhém řádku. To je nejlepší provést ve vašem jazyce.

Aby to bylo jednodušší, budete muset změnit schéma. Jednou z možností je uložit informace o oddělení do záznamu zaměstnance, ale ve vašem případě byste duplikovali spoustu dat.

Místo toho bych navrhl, aby každé oddělení obsahovalo seznam s ID zaměstnanců a daty, jako je tento:

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

V takovém případě můžete jednoduše spustit:

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


  1. Porovnání agregace MongoDB:group(), $group a MapReduce

  2. Existuje agregace MongoDB podle pole

  3. Redis:Je ZADD lepší než O(logN), když je vložený prvek na začátku nebo na konci?

  4. automatické zvýšení v node-mongodb-native pomocí kolekce čítačů