MongoDB 提供了不同类型的字段更新运算符来更新文档字段的值,$setOnInsert 运算符就是其中之一。当通过将 upsert 字段的值设置为 true 来在更新操作的帮助下插入新文档时使用此运算符,然后$setOneInsert
运算符将指定的值分配给文档中的字段。如果更新操作不会用于插入新文档,则$setOnInsert
操作符不会做任何事情。
$setOnInsert 运算符还可以处理嵌入/嵌套文档。您可以根据需要在 update()、findAndModify() 等方法中使用此运算符。如果使用 upsert:true 的 update() 或 findAndModify() 方法找到了匹配的文档,那么 mongoDB 将忽略 $setOnInsert 并应用 $set 运算符,如下例 3 所示。
用法:
db.collection.update( <query>, { $setOnInsert:{ <field1>:<value1>, <field1>:<value2>, ... } }, { upsert:true } )
借助点符号指定嵌入/嵌套文档中的字段。
在以下示例中,我们正在使用:
Database: GeeksforGeeks
Collection: Example
Document: one documents that contain the details of the employees in the form of field-value pairs.
使用在新文档中插入新字段$setOnInsert
:
在这个例子中,我们在 update() 方法的帮助下在 Example 集合中创建一个新文档,方法是将 upsert 字段的值设置为 true 并使用 $setOneInsert 运算符将值分配给文档中的部门和工资字段。
db.Example.update({name:{first:"Mina", last:"Singh"},
... personalDetails:{age:24, contactInfo:345678901}},
... { $setOnInsert:{department:"Development", salary:45000}},
... {upsert:true}
... )
使用在新文档中插入新的嵌入字段$setOnInsert
:
在这个例子中,我们在 update() 方法的帮助下在 Example 集合中创建一个新文档,方法是将 upsert 字段的值设置为 true 并使用$setOneInsert
运算符将值分配给嵌入的字段,即在文档中。
db.Example.update({"name.first":"Vinod", expreienceYear:5},
{$setOnInsert:{"personalDetails.age":27,
"personalDetails.contactInfo":345678901}},
{upsert:true})
效果 $setOnInsert
匹配文档上的运算符:
在这个例子中,我们正在检查 $setOnInsert 操作符是否与匹配的文档一起工作。此 $setOnInsert 运算符不适用于已存在的文档。或者换句话说,当 update() 方法找到匹配的文档时,MongoDB 将忽略此运算符。
db.Example.update({"name.first":"Mina"},
{$setOnInsert:{"personalDetails.age":27,
"personalDetails.contactInfo":345678001}},
{upsert:true})
前:
后:
相关用法
- MongoDB $in用法及代码示例
- MongoDB $max用法及代码示例
- MongoDB $min用法及代码示例
- MongoDB $inc用法及代码示例
- MongoDB $mul用法及代码示例
- MongoDB $rename用法及代码示例
注:本文由纯净天空筛选整理自ankita_saini大神的英文原创作品 MongoDB – SetOnInsert Operator ($setOnInsert)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。