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