当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


MongoDB $setOnInsert用法及代码示例


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

前:

后:




相关用法


注:本文由纯净天空筛选整理自ankita_saini大神的英文原创作品 MongoDB – SetOnInsert Operator ($setOnInsert)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。