Latest web development tutorials
×

MongoDB курс

MongoDB курс NoSQL Краткое введение MongoDB Краткое введение Window устанавливать MongoDB Linux устанавливать MongoDB MongoDB Интерпретация Концепции MongoDB подключение MongoDB Создание базы данных MongoDB Удалить базу данных MongoDB Вставить документ MongoDB Обновление документации MongoDB Удаление документов MongoDB документ Запрос MongoDB Условный оператор MongoDB $type операторы MongoDB Limit & Skip MongoDB последовательность MongoDB индекс MongoDB агрегирование MongoDB копия MongoDB Ломтики MongoDB Резервное копирование и восстановление MongoDB монитор MongoDB Java MongoDB PHP распространение MongoDB PHP MongoDB PHP7

MongoDB Расширенный учебник

MongoDB отношения MongoDB ссылки на базы данных MongoDB Индекс покрытия запроса MongoDB анализ запросов MongoDB атомарные операции MongoDB Расширенный индексации MongoDB ограничения индекса MongoDB ObjectId MongoDB Map Reduce MongoDB Полнотекстовый поиск MongoDB Регулярные выражения MongoDB Инструменты управления MongoDB GridFS MongoDB Фиксированный набор MongoDB Автоматический рост

MongoDB атомарные операции

MongoDB не поддерживает транзакции, поэтому, в применении вашего проекта, обратите внимание на этот момент. Вне зависимости от конструкции, мы не просим MongoDB обеспечения целостности данных.

Но MongoDB предоставляет множество атомарных операций, таких как сохранение документа, изменять, удалять и т.д., являются атомарные операции.

Либо это так называемая атомарной операцией, чтобы сохранить документ в MongoDB, или не будут сохранены в MongoDB, документ не имеет для запроса нетронутыми не будет.


Атомная модель данных

Рассмотрим следующий пример, в библиотеке книги и информацию о транзакции.

В одном примере показано, как обеспечить, чтобы тот же документ вкладывается поля, связанные атомарные операции (обновление: обновление) полей синхронизированы.

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

Вы можете использовать метод db.collection.findAndModify (), чтобы определить, может ли книги обновляться с новой расчетно-платежной информации.

Встроенный в том же документе доступны и кассовых полей, чтобы обеспечить эти поля будут синхронизированы обновления:

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

Атомарные операции часто используемые команды

$ Set

Он используется для указания ключа и обновить ключ, если ключ не существует, и создать.

{ $set : { field : value } }

$ Unset

Чтобы удалить ключ.

{ $unset : { field : 1} }

$ Inc

$ Inc может быть числовое значение документа (только для удовлетворения требований цифровых) клавиш для увеличения или уменьшения операций.

{ $inc : { field : value } }

$ Нажмите

Использование:

{ $push : { field : value } }

Добавляется в поле значение, чтобы войти внутрь, оно должно быть поле задания тип массива, если поле не существует, добавлен новый тип массива.

$ PushAll

С $ толчке, но как только вы можете добавить несколько значений в поле массива.

{ $pushAll : { field : value_array } }

$ Прицепные

Чтобы удалить поле из массива значение, равное значению.

{ $pull : { field : _value } }

$ AddToSet

Добавление значения в массив, и только тогда, когда значение не находится в пределах массива, чтобы увеличить.

$ Pop

Первый или последний элемент массива удаляется

{ $pop : { field : 1 } }

$ Rename

Изменить имя поля

{ $rename : { old_field_name : new_field_name } }

$ Bit

Битовые операции, целый тип

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

оператор сдвига

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