为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的 MongoDB shardCollection 命令

Go 中的 MongoDB shardCollection 命令

Go
牛魔王的故事 2021-12-20 19:29:47
我正在尝试使用 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错误我在这里做错了什么?
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

我认为您遇到的问题是您必须指定第二个字段是 的键,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)

}


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 363 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号