mongosh执行shardCollection命令报错:no such command 'shardCollection'
解决
sh.shardCollection报错“no such command 'shardCollection'”的问题 核心原因
你当前连接的是单个MongoDB节点(mongod)或副本集节点,而非分片集群的mongos路由节点。sh.shardCollection是仅能在mongos上执行的分片专属命令,普通mongod节点不支持该命令。错误提示里的"Are you connected to mongoose?"属于误判,和mongoose无关。
解决步骤
确认当前连接的节点类型
在mongosh中执行以下命令:db.runCommand({ connectionStatus: 1 })查看输出的
serverInfo.version字段,如果显示为mongod(而非mongos),说明你连错了节点。连接到mongos路由节点
- 使用mongosh重新连接:
(mongos默认端口为27017,具体地址和端口需根据你的集群配置调整)mongosh <mongos-host>:<mongos-port> - 如果用MongoDB Compass,在连接界面填入mongos节点的地址,而非单个mongod的地址。
- 使用mongosh重新连接:
执行分片操作的前置步骤
连接到mongos后,需先给目标数据库开启分片,再分片集合:// 先开启数据库分片 sh.enableSharding("my-db") // 再分片集合 sh.shardCollection("my-db.users", {"userId": 1})额外检查
- 确保你的分片集群已经正确搭建:配置节点、分片节点、mongos节点均正常运行
- 分片键
userId需有足够的基数(即不同值的数量足够多),避免出现分片不均的情况
内容的提问来源于stack exchange,提问作者YAŞAR EMRE DOĞRU
相关产品推荐
相关产品推荐

