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