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

wielokrotny operator aktualizacji mongo w jednym oświadczeniu?

Wiele aktualizacji może być przeprowadzanych na tym samym dokumencie, o ile te aktualizacje nie powodują konfliktu (stąd błąd „posiadają sprzeczne mody w aktualizacji”).

Ponieważ "$push" :{"bugs" :[{"name":"bug1", "count":1}]} i "$inc" :{"bugs.0.count" :1} próbują modyfikować tę samą część dokumentu (mianowicie tablicę „błędów”), powodują konflikty.

Wiele aktualizacji można łączyć, jeśli każda z nich ma wpływ na inną część dokumentu:

na przykład:

> db.test.drop()
true
> db.test.save({ "_id" : 1, "name" : "albert", "bugs" : [ ] })
> db.test.update({"name":"albert"}, {"$pushAll" : {"bugs" : [{"name":"bug1", "count":1}]}, "$inc" : {"increment" : 1}, $set:{"note":"Here is another field."}})
> db.test.find()
{ "_id" : 1, "bugs" : [ { "name" : "bug1", "count" : 1 } ], "increment" : 1, "name" : "albert", "note" : "Here is another field." }
> 

Aktualizacja zawierała trzy różne operacje ($pushAll, $inc i $set), ale zakończyła się pomyślnie, ponieważ każda operacja wpływała na inną część dokumentu.

Zdaję sobie sprawę, że nie jest to dokładnie to, na co liczyłeś, ale mam nadzieję, że zapewni to nieco lepsze zrozumienie działania aktualizacji i być może podpowie kilka pomysłów, w jaki sposób Twoje aktualizacje i/lub dokumenty mogą zostać zrestrukturyzowane w celu wykonywania funkcji, które aplikacja wymaga. Powodzenia.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo DB znajduje wszystkie rekordy o najwyższej wartości w zależności od pola kluczowego

  2. Nie można znaleźć dokumentów przeszukujących według ObjectId przy użyciu Mongoose

  3. Jak ustawić limit rozmiaru tablicy w schemacie Mongoose?

  4. mongodb nie mógł połączyć się z serwerem

  5. Node.js — Mongoose — Sprawdź, czy istnieje kolekcja