Оператор обновления поля MongoDB - $ setOnInsert
Описание
В MongoDB оператор $ setOnInsert используется для установки значений в поля только во время upsert, операция update () выполняет вставку при использовании опции upsert с update ().
В MongoDB оператор $ setOnInsert имеет значение только для операций update () с флагом upsert, так как эта операция выполняет исключительно вставку.
Когда update () имеет флаг upsert и выполняет обновление, это означает, что $ setOnInsert не имеет никакого эффекта.
Синтаксис:
db.collection.update (<запрос>, {$ setOnInsert: {<field1>: <value1>, ...}}, {upsert: true} )
Параметры:
название | Описание |
---|---|
запрос | может быть выражением или условием |
field1 | название столбца или поля |
value1 | значение, которое будет назначено или установлено для поля |
Имя нашей базы данных - «myinfo», а имя нашей коллекции - «items1» и предполагается, что коллекция пуста.
Пример оператора MongoDB $ setOnInsert для вставки документа
Следующая операция upsert выполняет вставку и применяет $ setOnInsert, чтобы установить описание поля в item1 и op_stock в 100:
>db.items1.update({ _id: 1 },{ $setOnInsert: {"description":"item1", "op_stock": 100 } },{ upsert: true });
Приведенный выше пример вставит новый документ в коллекцию items1.
Чтобы увидеть недавно вставленный документ -
> db.items1.find().pretty();
Примечание. Метод find () отображает документы в неструктурированном формате, но для отображения результатов в отформатированном виде можно использовать метод pretty ().
Вывод команды:
{"_id": 1, "description": "item1", "op_stock": 100}
Пример оператора MongoDB $ setOnInsert для обновления документа
Следующее обновление () с операцией флага upsert выполняет обновление:
>db.items1.update({ _id: 1 },{ $setOnInsert: {"op_stock": 200,"description":"item2" },$set: {"purqty": 100}},{ upsert: true });
Здесь в вышеприведенном примере update () с операцией upsert выполняет только обновление, так как поле op_stock и description уже существуют в документе, поэтому MongoDB игнорирует операцию $ setOnInsert и применяет только операцию $ set.
Чтобы увидеть обновленный вывод -
> db.employee.find (). pretty ();
Примечание. Метод find () отображает документы в неструктурированном формате, но для отображения результатов в отформатированном виде можно использовать метод pretty ().
Вывод команды:
{"_id": 1, "description": "item1", "op_stock": 100, "purqty": 100}
Новый контент: Composer: менеджер зависимостей для PHP , R программирования