Latest web development tutorials

operações atômicas do MongoDB

O MongoDB não suporta transações, portanto, na aplicação de seu projeto, preste atenção a este ponto. Seja qual for o projeto, nós não pedimos mongodb garantir a integridade dos dados.

Mas MongoDB oferece muitas operações atômicas, como salvar um documento, modificar, apagar, etc., são operações atômicas.

Ou este é o chamado operação atômica para salvar o documento para MongoDB, ou não guardado para MongoDB, o documento não tem que consultar intacta não vai acontecer.


modelo de dados Atomic

Considere o seguinte exemplo, livros da biblioteca e informações sobre a transação.

Em um exemplo ilustra como para assegurar que os mesmos campos do documento incorporado operações atômicas relacionados (update: update) Campos estão sincronizados.

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

Você pode usar o método db.collection.findAndModify () para determinar se os livros podem ser atualizados com novo assentamento e informações de faturamento.

Incorporado no mesmo documento disponível e check-out campos para garantir que esses campos são sincronizadas atualização:

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

operações atômicas comumente usado comandos

$ Set

Ele é utilizado para especificar uma chave e actualizar a chave, se a chave não existe e criar.

{ $set : { field : value } }

$ Unset

Para remover uma chave.

{ $unset : { field : 1} }

$ Inc

$ Inc pode ser um valor numérico das chaves para aumentar ou diminuir as operações de documentos (apenas para atender os requisitos da digital).

{ $inc : { field : value } }

$ Empurrar

Uso:

{ $push : { field : value } }

O valor acrescentado para o campo para ir para dentro, ele deve ser um trabalho de campo de tipo de matriz, se o campo não existir, um novo tipo de matriz acrescentou.

$ PushAll

Com US $ impulso, mas uma vez que você pode acrescentar vários valores em um campo de matriz.

{ $pushAll : { field : value_array } }

$ Pull

Para excluir um campo de uma matriz de valor igual valor.

{ $pull : { field : _value } }

$ AddToSet

A adição de um valor para a matriz, e apenas quando o valor não está dentro da matriz para aumentar.

$ Pop

O primeiro ou o último elemento da matriz de excluído

{ $pop : { field : 1 } }

$ Rename

Modificar o nome do campo

{ $rename : { old_field_name : new_field_name } }

$ Bit

operações de bit, tipo inteiro

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

operador de deslocamento

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