Latest web development tutorials

opérations atomiques MongoDB

mongodb ne supporte pas les transactions, par conséquent, dans l'application de votre projet, faites attention à ce point. Quelle que soit la conception, nous ne demandons pas mongodb assurer l'intégrité des données.

Mais mongodb fournit de nombreuses opérations atomiques, telles que l'enregistrement d'un document, modifier, supprimer, etc., sont des opérations atomiques.

Soit c'est le soi-disant opération atomique pour enregistrer le document à MongoDB, ou non enregistré à MongoDB, le document n'a pas à interroger intacte ne se produira pas.


modèle de données atomique

Prenons l'exemple suivant, les livres de bibliothèque et de l'information sur les transactions.

Dans un exemple illustre comment faire en sorte que les mêmes documents embarqués champs des opérations atomiques connexes (mise à jour: mise à jour) Les champs sont synchronisés.

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

Vous pouvez utiliser la méthode db.collection.findAndModify () pour déterminer si les livres peuvent être mis à jour avec le nouveau règlement et de facturation.

Embarqué dans le même document disponible et de départ des champs pour faire en sorte que ces champs sont synchronisés à jour:

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

Les opérations atomiques commandes fréquemment utilisées

$ Set

Il est utilisé pour spécifier une clé et mettre à jour la clé, si n'existe pas la clé et créer.

{ $set : { field : value } }

$ Unset

Pour supprimer une clé.

{ $unset : { field : 1} }

$ Inc

$ Inc peut être une valeur numérique des touches pour augmenter ou diminuer les opérations de documents (seulement pour répondre aux exigences du numérique).

{ $inc : { field : value } }

$ Poussez

Utilisation:

{ $push : { field : value } }

La valeur ajoutée sur le terrain pour aller à l'intérieur, il doit être un travail de champ de type tableau, si n'existe pas dans le champ, un nouveau type de réseau ajouté.

$ PushAll

Avec $ pousser, mais une fois que vous pouvez ajouter plusieurs valeurs dans un champ du tableau.

{ $pushAll : { field : value_array } }

$ Pull

Pour supprimer un champ à partir d'un tableau de valeur égale valeur.

{ $pull : { field : _value } }

$ AddToSet

L'ajout d'une valeur dans la matrice, et uniquement lorsque la valeur est différente dans le réseau augmente.

$ Pop

Le premier ou le dernier élément du tableau de suppression

{ $pop : { field : 1 } }

$ Renommer

Modifier le nom du champ

{ $rename : { old_field_name : new_field_name } }

$ Bit

Opérations sur bits, type entier

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

opérateur Shift

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