Latest web development tutorials

MongoDB atomare Operationen

mongodb keine Transaktionen unterstützt daher in der Anwendung Ihres Projekts, die Aufmerksamkeit auf diesen Punkt. Was auch immer das Design, die wir nicht fragen mongodb Datenintegrität zu gewährleisten.

Aber mongodb viele atomare Operationen liefert, wie ein Dokument zu speichern, ändern, löschen, etc., sind atomare Operationen.

Entweder ist dies die sogenannte atomare Operation um das Dokument zu MongoDB zu speichern oder nicht zu MongoDB gespeichert, wird das Dokument muss nicht intakt Abfrage wird nicht passieren.


Atomic-Datenmodell

Betrachten Sie das folgende Beispiel, Bücher aus der Bibliothek und Transaktionsinformationen.

In einem Beispiel veranschaulicht, wie sichergestellt werden, dass die gleichen Dokument eingebettet Feldern atomare Operationen (Update: update) Felder synchronisiert sind.

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") } ]
        }

Sie können db.collection.findAndModify () -Methode verwenden, ob mit neuen Abwicklungs- und Abrechnungsinformationen Bücher bestimmen können aktualisiert werden.

Eingebettet in den gleichen Dokument zur Verfügung und Kasse Felder, um sicherzustellen, dass diese Felder Update synchronisiert werden:

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

Atomic-Operationen häufig verwendeten Befehle

$ Set

Es wird verwendet, um einen Schlüssel zu geben und den Schlüssel zu aktualisieren, wenn der Schlüssel vorhanden ist und nicht schaffen.

{ $set : { field : value } }

$ Unset

Um einen Schlüssel zu entfernen.

{ $unset : { field : 1} }

$ Inc

$ Inc kann ein numerischer Wert des Dokuments sein Schlüssel (nur die Anforderungen der digitalen gerecht zu werden) zu erhöhen oder zu verringern Operationen.

{ $inc : { field : value } }

$ Drücken

Verbrauch:

{ $push : { field : value } }

Der Wert wird auf dem Feld hinzugefügt nach innen zu gehen, muss es sich um ein Array-Typ Feld Job sein, wenn das Feld nicht vorhanden ist, wird eine neue Array-Typ hinzugefügt.

$ PushAll

Mit $ Push, aber wenn Sie mehrere Werte in ein Array Feld anhängen.

{ $pushAll : { field : value_array } }

$ Pull

Um ein Feld aus einem Array von Wert gleich Wert löschen.

{ $pull : { field : _value } }

$ AddToSet

Addieren eines Werts in das Array, und nur dann, wenn der Wert nicht innerhalb des Arrays zu erhöhen.

$ Pop

Das erste oder das letzte Element des Arrays gelöschter

{ $pop : { field : 1 } }

$ Rename

Ändern Sie den Feldnamen

{ $rename : { old_field_name : new_field_name } }

$ Bit

Bit-Operationen, Integer-Typ

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

Shift-Operator

> 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 } ] }