文档菜单
文档首页
/
MongoDB 手册
/ /

设置缺失分片键字段

本页

  • 示例

如果您有缺失的分片键字段,可以将分片键字段设置为null。如果您想将缺少的分片键字段设置为非null值,请参阅更改文档的分片键值.

要执行更新,您可以在mongos上使用以下操作:

命令
方法
描述
multi: true
  • 只能用于将缺少的键值设置为null

  • 可以在事务内部或外部执行。

  • 可以是可重试写操作或不可重试。

  • 对于其他要求,请参阅具体的命令/方法。

multi: false
  • 可以用于将缺少的键值设置为null或任何其他值。

  • 将缺少的分片键字段更新为以下要求之一

    • 查询的过滤器包含对查询中完整分片键的相等条件

    • 查询的过滤器包含对_id的精确匹配

    • 更新目标是单个分片

  • 要将值设置为非null,请参阅更改文档的分片键值。

  • 对于其他要求,请参阅具体的命令/方法。

  • 可以用于将缺少的键值设置为null或任何其他值。

  • 当使用仅更新一个文档的方法设置缺少的分片键字段时,更新必须满足以下要求之一

    • 查询的过滤器包含对查询中完整分片键的相等条件

    • 查询的过滤器包含对_id的精确匹配

    • 更新目标是单个分片

  • 当在null上匹配时返回缺少的键值。为了避免更新值为null的键值,根据需要包括其他查询条件。

  • 要将值设置为非null,请参阅更改文档的分片键值。

  • 对于其他要求,请参阅具体的命令/方法。

  • 要在批量操作中将值设置为null,可以指定多个分片键修改。

  • 当使用仅更新一个文档的方法设置缺少的分片键字段时,更新必须满足以下要求之一

    • 查询的过滤器包含对查询中完整分片键的相等条件

    • 查询的过滤器包含对_id的精确匹配

    • 更新目标是单个分片

  • 要将值设置为非null,请参阅更改文档的分片键值。

  • 对于其他要求,请参阅底层命令/方法。

考虑一个sales集合,该集合基于location字段分片。集合中的一些文档没有location字段。缺少的字段被视为与字段为null相同的值。要显式将这些字段设置为null,请运行以下命令

db.sales.updateOne(
{ _id: 12345, location: null },
{ $set: { location: null } }
)

当使用db.collection.updateOne()或另一个仅显式更新一个文档的方法设置缺少的分片键字段时,更新必须满足以下要求之一

  • 查询的过滤器包含对查询中完整分片键的相等条件

  • 查询的过滤器包含对_id的精确匹配

  • 更新目标是一个单独的分片

返回

更改文档的分片键值

本页