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

Czy istnieje sposób na atomową aktualizację dwóch kolekcji w MongoDB?

Jest tu wiele odpowiedzi, ale chcę wypełnić wszystkie puste pola:

Czy istnieje sposób na atomową aktualizację dwóch kolekcji w MongoDB?

Nie. Atomowa aktualizacja dwóch kolekcji jest de facto transakcją. MongoDB nie obsługuje transakcji między kolekcjami ani nawet w ramach kolekcji.

MongoDB udostępnia kilka modyfikatorów, które są niepodzielne w jednym dokumencie. Możesz więc zwiększyć kilka różnych zmiennych jednocześnie ($inc ). Chociaż istnieją tutaj pewne ograniczenia, nie można wykonać dwóch różnych operacji na jednej właściwości.

Czy istnieje sposób na warunkową zmianę czegoś w jednej kolekcji na podstawie wyników innej kolekcji w jednym ujęciu?

Jest tutaj kilka dokumentów dotyczących ogólnych aktualizacji atomowych. Jednak naprawdę potrzebujesz kolejki i jakiejś formy zatwierdzania dwufazowego lub potrzebujesz wyzwalaczy.

Wyzwalacze nie zostały jeszcze zaimplementowane, więc w twoim przypadku nie jest to opcja.

Istnieje możliwość, że wiadomość zostanie oznaczona jako przeczytana pomiędzy tymi czynnościami, wtedy niepoprawnie zmniejszę liczbę „nieprzeczytanych”.

W tym momencie masz kilka różnych strategii, aby to zachowywało się z pewnym poziomem spójności. Szczerze mówiąc, na podstawie twojego opisu możesz zbadać tworzenie prostej kolejki, która aktualizuje twoje sumy.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie można uzyskać allowDiskUse:True to work z pymongo

  2. Unikalny indeks w manguście nie działa

  3. Jak uzyskać wszystkie liczby modelu mangusty?

  4. Przecięcie indeksu MongoDB

  5. MongoDB:znajdź minimalny element w tablicy i usuń go