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

Come limitare l'eliminazione in MongoDB per la raccolta di relazioni

Possiamo farlo usando $nin

facci avere una raccolta di aziende con 3 record

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"}

Facciamo in modo che la raccolta dei dipendenti con 3 recordl'attributo della società nella raccolta dei dipendenti faccia riferimento all'ID del documento della raccolta delle aziende, per i test abbiamo dipendenti per l'azienda 1 e 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}

Prima di rimuovere le aziende senza dipendenti, dobbiamo prima trovare le aziende con dipendenti. Per evitare voci multiple, utilizziamo distinct

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

ora abbiamo utilizzato $nin con le diverse aziende che hanno dipendenti per rimuovere le aziende che non hanno dipendenti

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

Ora, se eseguiamo la query di ricerca sulla raccolta delle aziende, otterremo solo due record.

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

la società 3 viene rimossa poiché non ha dipendenti

Spero che aiuti!