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

Sådan begrænser du sletning i MongoDB til indsamling af relationer

Vi kan gøre dette ved at bruge $nin

lad os have firmasamling med 3 poster

db.companies.find();

{"_id":1, "name":"ABC Pvt Ltd", "Address":"Chennai, India"}
{"_id":2, "name":"XYZ Pvt Ltd", "Address":"Mumbai, India"}
{"_id":3, "name":"LMN Pvt Ltd", "Address":"Delhi, India"}

Lad os have medarbejderindsamling med 3 recordscompany-attribut i medarbejdersamlingen refererer til dokument-id'et for virksomhedens indsamling, til test har vi medarbejdere for virksomhed 1 og 2.

db.employees.find();

{"_id":1, "firstname":"X", "lastname":"Y", "company":1}
{"_id":2, "firstname":"A", "lastname":"B", "company":1}
{"_id":2, "firstname":"Z", "lastname":"A", "company":2}

Før vi fjerner virksomhederne uden nogen ansatte, skal vi først finde de virksomheder med ansatte. For at undgå flere poster, lad os bruge distinct

db.employees.distinct("company")
[ 1, 2 ]

nu har vi brugt $nin med de særskilte virksomheder, som har ansatte til at fjerne de virksomheder, der ikke har ansatte

db.companies.remove({"_id":{$nin : db.employees.distinct("company")}});

Hvis vi nu udfører find-forespørgsel på firmaindsamling, får vi kun to poster.

db.companies.find();
{ "_id" : 1, "name" : "ABC Pvt Ltd", "Address" : "Chennai, India" }
{ "_id" : 2, "name" : "XYZ Pvt Ltd", "Address" : "Mumbai, India" }

virksomhed 3 er fjernet, da den ikke har nogen ansatte

Håber det hjælper!




  1. MongoDB java driver 3.0 kan ikke fange undtagelse ved godkendelse

  2. Oprettelse af en DB-tjeneste i en MVC Express-app

  3. Hvordan bliver connect-mongo MongoStore-sessioner faktisk gemt?

  4. Hvordan implementerer MongoDB dets rumlige indekser?