Go 中的 MongoDB shardCollection 命令

我正在尝试使用 Go 中的 mgo 库对集合进行分片。看起来我无法弄清楚使用 Session.Run 调用运行命令。这是我的代码:


if err := session.DB("admin").Run(bson.D{{"shardCollection", "visits.visits-2016-05"}, {"uuid", "1"}}, &result); err != nil {

    panic(err)

} else {

    fmt.Println(result)

}

我已经尝试了几种传递关键参数的变体,但我总是遇到no shard key错误


我在这里做错了什么?


牛魔王的故事
浏览 364回答 1
1回答

千万里不及你

我认为您遇到的问题是您必须指定第二个字段是 的键,key值是 的子文档{uuid: 1}。通过这种方式,您可以匹配 mongo 文档中列出的确切字段:https : //docs.mongodb.org/manual/reference/command/shardCollection/。我用于同一过程的代码是:if err := adminDb.Run(            bson.D{                {                    "shardCollection",                    "logs.log_"+dateString,                },                {                    "key",                    bson.M{                        "sk": "hashed",                    },                },            }, &result); err != nil {                log.Println("Failed to shardCollection logs.log_"+dateString, err)            }所以你可能想尝试if err := session.DB("admin").Run(bson.D{{"shardCollection", "visits.visits-2016-05"}, {"key", bson.M{"uuid", "1"}}}, &result); err != nil {    panic(err)} else {    fmt.Println(result)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go