首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从mongodb中的数组中创建一个shard键吗?

可以从mongodb中的数组中创建一个shard键吗?
EN

Stack Overflow用户
提问于 2015-05-29 08:04:46
回答 2查看 1.5K关注 0票数 2

我正试图从数组中创建切分键,但它显示了错误-

errmsg“:”不能在{ mid: 1.0 }和建议的碎片键{ mid: 1.0,t.category: 1.0,t.value: 1.0 }上使用唯一的索引来分割集合‘t.value’。“除非碎片键是前缀,否则不能保持唯一性”

EN

回答 2

Stack Overflow用户

发布于 2015-05-29 09:24:05

来自克里斯蒂娜·乔多罗的书MongoDB -权威指南

碎片键不能是数组。如果任何键都有数组值,并且不允许在该字段中插入数组,sh.shardCollection()将失败。插入文档后,无法修改文档的碎片键值。若要更改文档的碎片键,必须移除文档、更改密钥并重新插入。因此,您应该选择一个不可更改或经常更改的字段。

票数 2
EN

Stack Overflow用户

发布于 2020-01-07 14:15:08

根据4.4版

引入了可细化的切分键,这意味着即使在定义了碎片级之后,也可以通过添加/后缀/追加键来保持更细粒度级别的再平衡,以便按照集群中的数据增长/添加新的碎片来更好地分配/基数。

从官方来源复制

MongoDB 4.4提供了精练切分键本身的功能,并能够创建复合散列碎片密钥,以便在集群中进行更细粒度的数据分发。

碎片键不能是数组。如果任何键都有数组值,并且不允许在该字段中插入数组,sh.shardCollection()将失败。

适用于4.2版

但是,作为一个重要的注意事项,新版本从4.2开始发布,下面的声明不适用。

“一旦插入,文档的碎片键值就不能被修改”。

因此,对这个问题的答案是,可以修改密钥吗?

虽然不能为切分集合选择不同的碎片键(从MongoDB 4.2开始),但可以更新文档的碎片键值,除非shard键字段是不可变的_id字段

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30524334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档