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

Jak v mongoDb odstraníte prvek pole podle jeho indexu?

Neexistuje žádný přímý způsob stahování/odstraňování podle indexu pole. Ve skutečnosti se jedná o otevřené téma http://jira.mongodb.org/browse/SERVER-1014, můžete pro něj hlasovat.

Řešením je použití $unset a poté $pull:

db.lists.update({}, {$unset : {"interests.3" : 1 }}) 
db.lists.update({}, {$pull : {"interests" : null}})

Aktualizace:jak bylo zmíněno v některých komentářích, tento přístup není atomický a může způsobit určité závody, pokud jiní klienti mezi těmito dvěma operacemi čtou a/nebo zapisují. Pokud potřebujeme, aby operace byla atomová, mohli bychom:

  • Přečtěte si dokument z databáze
  • Aktualizujte dokument a odeberte položku v poli
  • Nahraďte dokument v databázi. Abychom se ujistili, že se dokument od doby, kdy jsme ho přečetli, nezměnil, můžeme použít aktualizaci aktuálního vzoru popsaného v mongo docs


  1. Jak se dotazovat na dokumenty pomocí pole _id v ovladači Java mongodb?

  2. Jak vygenerovat jedinečné ID objektu v mongodb

  3. Získejte konkrétní prvek z pole mongoDB

  4. Začínáme s MongoDB a Mongoose