是否可以从mongodb中的数组创建分片键?

问题描述 投票:1回答:2

我正在尝试从数组创建分片键,但它向我显示错误-

errmsg“:“无法对具有唯一索引的集合'inno.inno_pub'进行分片{mid:1.0}和建议的分片键{mid:1.0,t.category:1.0,t。值:1.0}。 “除非分片密钥是唯一的,否则无法保持唯一性前缀“

mongodb sharding
2个回答
2
投票

来自Kristina Chodorow的书MongoDB - The Definitive Guide

分片键不能为数组。 sh.shardCollection()将失败键具有数组值,但不将数组插入该字段允许的。插入后,文档的分片键值不能为改性。要更改文档的分片键,必须删除文档,更改密钥,然后重新插入。因此,您应该选择一个不可更改或经常更改的字段。


0
投票

分片键不能为数组。如果任何键具有数组值,并且不允许将数组插入该字段,则sh.shardCollection()将失败。

在4.2+版本上保持良好状态


但是,作为从4.2开始的新版本发布的重要说明,以下声明不适用。

“一旦插入,就无法修改文档的分片键值”。

所以问题的答案,可以更改分片键吗?

尽管不能为分片集合选择其他分片键,但从MongoDB 4.2开始,您可以更新文档的分片键值,除非分片键字段是不可变的_id字段

© www.soinside.com 2019 - 2024. All rights reserved.