MongoDB 的 $setOnInsert 操作符有什么作用?

推荐答案

$setOnInsert 是 MongoDB 中的一个更新操作符,用于在更新操作中插入新文档时设置字段的值。如果更新操作导致插入新文档(即 upserttrue 且没有匹配到任何文档),$setOnInsert 会将指定的字段和值添加到新文档中。如果更新操作只是修改现有文档,$setOnInsert 不会对文档进行任何更改。

本题详细解读

使用场景

$setOnInsert 通常用于 upsert 操作中,即当更新操作没有找到匹配的文档时,插入一个新文档。在这种情况下,$setOnInsert 可以确保新插入的文档包含某些默认值或初始值。

语法

示例

假设有一个 users 集合,我们希望更新一个用户的 lastLogin 时间,如果用户不存在,则插入一个新用户并设置 createdAt 字段。

  • 如果 username"john_doe" 的用户存在,lastLogin 字段会被更新,createdAt 字段不会被修改。
  • 如果 username"john_doe" 的用户不存在,MongoDB 会插入一个新文档,包含 usernamelastLogincreatedAt 字段。

注意事项

  • $setOnInsert 只在插入新文档时生效,不会影响现有文档的更新操作。
  • 如果 upsertfalse 或未指定,$setOnInsert 不会生效。
纠错
反馈