MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak ograniczyć usuwanie w MongoDB w celu zbierania relacji

Możemy to zrobić za pomocą $nin

pozwól nam mieć zbiór firm z 3 rekordami

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

Pozwól nam mieć kolekcję pracowników z 3 rekordamiAtrybut firma w kolekcji pracowników odnosi się do identyfikatora dokumentu kolekcji firm, do testów mamy pracowników dla firmy 1 i 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}

Przed usunięciem firm bez pracowników, najpierw musimy znaleźć firmy z pracownikami. Aby uniknąć wielu wpisów, użyjmy distinct

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

teraz użyliśmy dziesięciu dolarów z różnymi firmami, które mają pracowników, aby usunąć firmy, które nie mają pracowników

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

Teraz, jeśli wykonamy zapytanie find na zbiorze firm, otrzymamy tylko dwa rekordy.

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

firma 3 została usunięta, ponieważ nie ma pracowników

Mam nadzieję, że to pomoże!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak testować indeksy Mongo w testach integracyjnych?

  2. Grupuj według wielu kolumn w MongoDB

  3. Pobierz indeks elementu w tablicy w MongoDB

  4. MongoDB:agregacja za pomocą $cond z $regex

  5. jak ustawić klucz przez var w manguście,Node.js?