sql >> Databáze >  >> NoSQL >> MongoDB

Jak omezit odstranění v MongoDB pro kolekci vztahů

Můžeme to udělat pomocí $nin

ať máme sbírku společností se 3 záznamy

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

Nechte nás mít sbírku zaměstnanců se 3 záznamy, atribut společnosti v kolekci zaměstnanců odkazuje na ID dokumentu kolekce společností, pro testování máme zaměstnance pro společnost 1 a 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}

Než odstraníme společnosti bez zaměstnanců, musíme nejprve najít společnosti se zaměstnanci. Abychom se vyhnuli vícenásobným záznamům, použijte distinct

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

nyní jsme použili $ nin u různých společností, které mají zaměstnance, abychom odstranili společnosti, které nemají zaměstnance

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

Pokud nyní provedeme vyhledávací dotaz na kolekci společností, získáme pouze dva záznamy.

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

společnost 3 je odstraněna, protože nemá žádné zaměstnance

Doufám, že to pomůže!




  1. Jak spustit db.killOp() pomocí nativního ovladače Node.js MongoDB?

  2. Klíč ioredis s odpovídajícím vzorem

  3. jaký je mechanismus pro provádění průniku v dotazu Mongo Linq

  4. Chyba tvrzení:1 ==0 pro příkaz MongoDB deleteOne