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

Има ли начин за атомарно актуализиране на две колекции в MongoDB?

Тук има много отговори, но искам да попълня всички празни места тук:

Има ли начин за атомарно актуализиране на две колекции в MongoDB?

Не. Атомната актуализация на две колекции на практика е транзакция. MongoDB не поддържа транзакции между колекции или дори в колекция.

MongoDB предоставя няколко модификатора, които са атомарни в един документ. Така че можете да увеличите няколко различни променливи наведнъж ($inc ). Въпреки че тук има някои ограничения, не можете да изпълнявате две различни операции върху едно свойство.

Има ли начин да промените условно нещо в една колекция въз основа на резултатите от друга колекция в един кадър?

Тук има някои документи за атомните актуализации като цяло. Това, от което наистина се нуждаете обаче, е опашка и някаква форма на двуфазно комитиране или имате нужда от тригери.

Тригерите все още не са внедрени, така че всъщност не е опция във вашия случай.

Има възможност съобщението да бъде маркирано като прочетено между тези действия, след което ще намаля неправилно броя на „непрочетените“.

В този момент имате няколко различни стратегии, за да направите това поведение с известно ниво на последователност. Честно казано, въз основа на вашето описание може да искате да проучите изграждането на проста опашка, която актуализира общите ви суми.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какъв е правилният начин за индексиране в MongoDB, когато съществува голяма комбинация от полета

  2. Сортиране с помощта на MongoEngine?

  3. Как да извика db.Collection.stats() от Mongo java драйвер

  4. MongoDB Дублиращи се документи дори след добавяне на уникален ключ

  5. Вземете най-новия запис от колекцията на mongodb