MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

В mongoDb, как премахвате елемент от масива по неговия индекс?

Няма пряк начин за изтегляне/премахване чрез индекс на масив. Всъщност това е отворен въпрос http://jira.mongodb.org/browse/SERVER-1014 , можете да гласувате за него.

Заобиколното решение е използването на $unset и след това $pull:

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

Актуализация:както е споменато в някои от коментарите, този подход не е атомичен и може да причини някои условия на състезание, ако други клиенти четат и/или пишат между двете операции. Ако трябва операцията да е атомарна, бихме могли:

  • Прочетете документа от базата данни
  • Актуализирайте документа и премахнете елемента в масива
  • Заменете документа в базата данни. За да гарантираме, че документът не се е променил, откакто сме го прочели, можем да използваме актуализацията, ако текущият модел е описан в документите на mongo


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Довеждане на MongoDB в производство

  2. MongoDB на Ubuntu няма да стартира като услуга, нищо в регистрационния файл

  3. Моля, използвайте „MongoMappingContext#setAutoIndexCreation(boolean)“ или заменете „MongoConfigurationSupport#autoIndexCreation()“, за да бъде изрично

  4. Редът на полето в MongoDB и позицията на документа се променят след актуализация

  5. Redis срещу MongoDB