On this page
$setOnInsert
在本页面
Definition
$setOnInsert
- 如果使用upsert: true进行更新操作导致插入了文档,则$setOnInsert将指定的值分配给文档中的字段。如果更新操作未导致插入,则$setOnInsert不执行任何操作。
您可以为db.collection.update()或db.collection.findAndModify()方法指定upsert
选项。
db.collection.update(
<query>,
{ $setOnInsert: { <field1>: <value1>, ... } },
{ upsert: true }
)
要在嵌入式文档或数组中指定<field>
,请使用dot notation。
Example
名为products
的集合不包含任何文档。
然后,以下db.collection.update()和upsert: true插入一个新文档。
db.products.update(
{ _id: 1 },
{
$set: { item: "apple" },
$setOnInsert: { defaultQty: 100 }
},
{ upsert: true }
)
MongoDB 从<query>
条件创建一个_id
等于1
的新文档,然后将$set和$setOnInsert操作应用于此文档。
products
集合包含新插入的文档:
{ "_id" : 1, "item" : "apple", "defaultQty" : 100 }
如果db.collection.update()和upsert: true找到了匹配的文档,则 MongoDB 会执行更新,应用$set操作,但忽略$setOnInsert操作。