sql >> Database >  >> NoSQL >> MongoDB

MongoDB-query IN array van object

Dit kan niet worden gedaan met een eenvoudige query. U moet over employee.departments heen lopen en voor elke iteratie zijn afdelingen_id aan een array toevoegen. Deze array kun je dan gebruiken in je tweede regel. U kunt dit het beste doen in de taal van uw keuze.

Om dit gemakkelijker te maken, moet u uw schema wijzigen. Een optie is om de afdelingsinformatie op te slaan in het personeelsdossier, maar in uw geval zou u veel gegevens dupliceren.

Ik zou in plaats daarvan voorstellen om elke afdeling een lijst met werknemers-ID's en datums te laten bevatten, in plaats daarvan als volgt:

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

In dat geval kunt u eenvoudig het volgende uitvoeren:

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


  1. Kan MongoDB een index gebruiken bij het controleren op het bestaan ​​van een veld met de operator $exists?

  2. Krijg het aantal logniveaus voor elke naam

  3. Behouden arrays die zijn opgeslagen in MongoDB hun volgorde?

  4. Kan module 'socket.io/node_modules/redis' niet vinden