1

我正在尝试基于分片键的分片收集:寻找帮助我发现我可以做到这一点 sh.shardCollection("database.collection", myKey)

但是当我这样做时,我会收到消息

{ "ok" : 0, "errmsg" : "sharding not enabled for db" }

mongod --configsvr也开始了mongod --shardsvr,所以我认为我已经启用了分片。知道我该怎么做吗?

4

2 回答 2

2

其实一切都很简单。您需要做的就是为您的数据库启用分片(是的,它有点写在错误消息中)。

你可以这样做sh.enableSharding(database)

要查看分片命令,您可以执行此操作sh.help(),这将输出您是命令列表及其描述。在那里你可以找到这个 enableSharding。

还要记住,在进行分片之前,您的 myKey 上需要有 indeces(否则您会收到一些关于 indeces 的错误)。因此,如果您还没有这样做 - 之前创建它们db.collection.ensureIndex(myKey)

于 2013-11-12T01:08:05.573 回答
0

例如,这会将散列分片索引和分片键添加到生成的 _id 字段 - 不建议使用它,这只是如何启用分片的示例

sh.enableSharding("mydatabase")
use mydatabase
var shardKey = { "_id": "hashed" }
db.customers.createIndex(shardKey)
sh.shardCollection( "mydatabase.customers", shardKey)
于 2019-10-10T22:19:50.570 回答