Latest web development tutorials

operazioni atomiche MongoDB

MongoDB non supporta le transazioni, di conseguenza, l'applicazione del progetto, prestare attenzione a questo punto. Qualunque sia il design, non chiediamo mongodb garantire l'integrità dei dati.

Ma MongoDB offre molte operazioni atomiche, come il salvataggio di un documento, modificare, cancellare, ecc, sono operazioni atomiche.

O questa è la cosiddetta operazione atomica per salvare il documento in MongoDB, o meno salvato MongoDB, il documento non deve interrogare intatto non accadrà.


modello di dati atomico

Si consideri il seguente esempio, libri della biblioteca e informazioni sulle transazioni.

In un esempio illustra come garantire che gli stessi campi documento incorporato operazioni atomiche correlati: sono sincronizzati (aggiornamento) Campi.

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

È possibile utilizzare il metodo db.collection.findAndModify () per determinare se i libri possono essere aggiornati con il nuovo insediamento e le informazioni di fatturazione.

Incorporato nello stesso documento a disposizione e nella verifica campi per garantire che questi campi sono sincronizzati aggiornamento:

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

operazioni atomiche comunemente utilizzati comandi

$ Set

Viene utilizzato per specificare una chiave e aggiornare la chiave, se la chiave non esiste e creare.

{ $set : { field : value } }

$ Unset

Per rimuovere una chiave.

{ $unset : { field : 1} }

$ Inc

$ Inc può essere un valore numerico del documento (solo per soddisfare le esigenze del digitale) tasti per aumentare o diminuire operazioni.

{ $inc : { field : value } }

$ push

Uso:

{ $push : { field : value } }

Il valore aggiunto al campo per andare dentro, deve essere un lavoro campo tipo di matrice, se il campo non esiste, un nuovo tipo di matrice aggiunto.

$ PushAll

Con $ spinta, ma una volta che è possibile aggiungere più valori in un campo di matrice.

{ $pushAll : { field : value_array } }

$ Pull

Per eliminare un campo da una matrice di valore di pari valore.

{ $pull : { field : _value } }

$ AddToSet

L'aggiunta di un valore nella matrice, e solo quando il valore non è all'interno della matrice ad aumentare.

$ Pop

Il primo o l'ultimo elemento della matrice di soppresso

{ $pop : { field : 1 } }

$ Rinomina

Modificare il nome del campo

{ $rename : { old_field_name : new_field_name } }

$ Bit

operazioni a bit, tipo intero

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

operatore di spostamento

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