Latest web development tutorials

MongoDB operacje atomowe

MongoDB nie obsługuje transakcji, w związku z tym, w zakresie stosowania danego projektu, należy zwrócić uwagę na ten punkt. Niezależnie od projektu, nie pytamy MongoDB zapewnienia integralności danych.

Ale MongoDB zapewnia wiele operacji atomowych, takich jak zapisywanie dokumentu, modyfikować, usuwać itd., Są operacje atomowe.

Albo jest to tak zwana operacja atomowa aby zapisać dokument na MongoDB, czy nie zapisany MongoDB, dokument nie musi zapytać nienaruszone nie stanie.


Atomic model danych

Rozważmy następujący przykład książki, biblioteki i informacji o transakcji.

W jednym z przykładów ilustruje sposób, aby zapewnić, że ten sam dokument osadzony dziedzin pokrewnych operacje atomowe (aktualizacja: aktualizacja) pola są zsynchronizowane.

book = {
          _id: 123456789,
          title: "MongoDB: The Definitive Guide",
          author: [ "Kristina Chodorow", "Mike Dirolf" ],
          published_date: ISODate("2010-09-24"),
          pages: 216,
          language: "English",
          publisher_id: "oreilly",
          available: 3,
          checkout: [ { by: "joe", date: ISODate("2012-10-15") } ]
        }

metodę db.collection.findAndModify () można użyć do określenia, czy książki mogą być aktualizowane o nowe osady i informacji rozliczeniowych.

Osadzony w tym samym dokumencie dostępne i kasowych pól w celu zapewnienia, że ​​te pola są zsynchronizowane aktualizacji:

db.books.findAndModify ( {
   query: {
            _id: 123456789,
            available: { $gt: 0 }
          },
   update: {
             $inc: { available: -1 },
             $push: { checkout: { by: "abc", date: new Date() } }
           }
} )

Operacje atomowe często używane polecenia

$ Set

Jest on używany do określenia klucza i zaktualizować klucz, jeśli klucz nie istnieje i tworzyć.

{ $set : { field : value } }

$ Wyłączony

Aby usunąć klucz.

{ $unset : { field : 1} }

$ Inc

$ Inc może być wartością liczbową dokumentu (tylko w celu spełnienia wymagań cyfrowej) kluczy, aby zwiększyć lub operacji zmniejszania.

{ $inc : { field : value } }

$ push

Zastosowanie:

{ $push : { field : value } }

Wartością dodaną do pola, aby wejść do środka, musi być zadaniem pole typu array, jeśli pole nie istnieje, to nowy typ tablicy dodał.

$ PushAll

Dolarów naciśnięciem, ale raz można dołączyć wiele wartości do pola tablicy.

{ $pushAll : { field : value_array } }

$ Pull

Aby usunąć pole z tablicy wartości równej wartości.

{ $pull : { field : _value } }

$ AddToSet

Dodanie wartości do tablicy, i tylko wtedy, gdy wartość nie mieści się w tablicy, aby zwiększyć.

$ Pop

Pierwszy i ostatni element tablicy usunięte

{ $pop : { field : 1 } }

$ Rename

Zmienić nazwę pola

{ $rename : { old_field_name : new_field_name } }

$ Bit

Operacje bitowe, typ całkowity

{$bit : { field : {and : 5}}}

operator przesunięcia

> t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }
 
> t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1}}, false, true )
 
> t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 4 }, { "by" : "jane", "votes" : 7 } ] }