We kunnen dit doen met $nin
laat ons een verzameling bedrijven hebben met 3 records
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"}
Laten we een werknemersverzameling hebben met 3 recordscompany-attributen in de werknemersverzameling verwijst naar de document-ID van de bedrijvenverzameling, voor het testen hebben we werknemers voor bedrijf 1 en 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}
Voordat we de bedrijven zonder werknemers verwijderen, moeten we eerst de bedrijven met werknemers vinden. Om meerdere invoer te vermijden, laten we distinct gebruiken
db.employees.distinct("company")
[ 1, 2 ]
nu hebben we $nin gebruikt met de verschillende bedrijven die werknemers hebben om de bedrijven te verwijderen die geen werknemers hebben
db.companies.remove({"_id":{$nin : db.employees.distinct("company")}});
Als we nu een zoekopdracht uitvoeren voor de verzameling van bedrijven, krijgen we slechts twee records.
db.companies.find();
{ "_id" : 1, "name" : "ABC Pvt Ltd", "Address" : "Chennai, India" }
{ "_id" : 2, "name" : "XYZ Pvt Ltd", "Address" : "Mumbai, India" }
bedrijf 3 is verwijderd omdat het geen werknemers heeft
Ik hoop dat het helpt!