分片集群中的操作限制
在此页面上
分片操作限制
分片环境中的不可用操作
$where
不允许引用 $where
函数中的 db
对象。这在未分片集合中并不常见。
分片环境中不支持 geoSearch
命令。
分片集合中的单份文档修改操作
要对指定 multi: false
或 justOne
选项的分片集合使用 updateOne()
和 deleteOne()
操作:
如果您仅针对一个分片,则可以在查询规范中使用部分分片键,或者
您可以在查询规范中提供分片键或
_id
字段。
要将 findOneAndUpdate()
与分片集合一起使用,您的查询筛选器必须在分片键上包含相等条件,以比较以下任一格式的键和值:
{ key: value } { key: { $eq: value } }
分片集合中的唯一索引
MongoDB 不支持跨分片的唯一索引,除非唯一索引包含完整分片键作为索引的前缀。在这些情况下,MongoDB 将在整个键上强制执行唯一性,而不是单个字段。
一致的索引
MongoDB 不保证所有分片的索引一致。addShard
操作或数据段迁移期间的索引创建可能不会传播到新的分片。
要检查分片集群的索引是否一致,请使用 checkMetadataConsistency
命令:
db.runCommand( { checkMetadataConsistency: 1, checkIndexes: true } )