MongoDB: метод db.collection.save ()
db.collection.save
Метод db.collection.save () используется для обновления существующего документа или вставки нового документа, в зависимости от его параметра документа.
Синтаксис:
db.collection.save ()
Параметры:
название | Описание | Необходимые / Необязательный | Тип |
---|---|---|---|
документ | Документ для сохранения в коллекцию. | необходимые | документ |
writeConcern | Документ, выражающий озабоченность по поводу записи. Не используйте функцию записи по умолчанию. | Необязательный | документ |
Возвращает:
Объект WriteResult, который содержит статус операции.
Пример: сохранение нового документа без указания an_idField
В следующем примере метод save () выполняет вставку, поскольку документ, переданный методу, не содержит поле_id:
db.invoice.save( { inv_no: "I00001", inv_date: "10/10/2012", ord_qty:200 } );
Выход:
> db.invoice.save ({inv_no: "I00001", inv_date: "10/10/2012", ord_qty: 200}); WriteResult ({"nInserted": 1})
Во время вставки оболочка создаст поле _id с уникальным значением ObjectId, что подтверждается вставленным документом:
> db.invoice.find();
{ "_id" : ObjectId("5677ddc7fad7da08e362a3b8"), "inv_no" : "I00001", "inv_date" : "10/10/2012", "ord_qty" : 200 }
Пример>: сохранение нового документа с указанием an_idField
В следующем примере save () выполняет обновление с помощьюsert: true, поскольку документ содержит поле an_id:
db.invoice.save( { _id: 1001,inv_no: "I00001", inv_date: "10/10/2012", ord_qty:200 } );
Выход:
> db.invoice.save ({_id: 1001, inv_no: "I00001", inv_date: "10/10/2012", ord_qty: 200}); WriteResult ({"nMatched": 0, "nUpserted": 1, "nModified": 0, "_id": 1001})
Результатом операции является следующий новый документ в коллекции счетов.
> db.invoice.find();
{ "_id" : 1001, "inv_no" : "I00001", "inv_date" : "10/10/2012", "ord_qty" : 200 }
Пример: заменить существующий документ
Коллекция продуктов содержит следующий документ:
{ "_id" : 1001, "inv_no" : "I00001", "inv_date" : "10/10/2012", "ord_qty" : 200 }
Метод save () выполняет обновление с помощью upsert: true, поскольку документ содержит поле _id:
db.invoice.save( { _id: 1001,inv_no: "I00015", inv_date: "15/10/2012", ord_qty:500 } );
Выход:
> db.invoice.save ({_id: 1001, inv_no: "I00015", inv_date: "15/10/2012", ord_qty: 500}); WriteResult ({"nMatched": 1, "nUpserted": 0, "nModified": 1})
Поскольку поле _id содержит значение, которое существует в коллекции, операция выполняет обновление для замены документа и приводит к следующему документу:
> db.invoice.find();
{ "_id" : 1001, "inv_no" : "I00015", "inv_date" : "15/10/2012", "ord_qty" : 500 }
Получить данные о ресторанах здесь
Поведение
Сейф пишет
Метод save () использует либо команду вставки, либо команду обновления, в которой используется стандарт записи по умолчанию. Чтобы указать другое значение записи, включите значение записи в параметр options.
Вставить
Если документ не содержит поля _id, то метод save () вызывает метод insert (). Во время операции оболочка mongo создаст ObjectId и присвоит его полю _id.
ПРИМЕЧАНИЕ. Большинство клиентов драйверов MongoDB включают поле _id и генерируют ObjectId перед отправкой операции вставки в MongoDB; однако, если клиент отправляет документ без поля _id, mongod добавит поле _id и сгенерирует ObjectId.
Обновить
Если документ содержит поле _id, то метод save () эквивалентен обновлению с опцией upsert, установленной в true, и предикатом запроса в поле _id.
Предыдущая: db.collection. метод renameCollection ()
Далее: метод db.collection.stats ()
Новый контент: Composer: менеджер зависимостей для PHP , R программирования