不能 运行 命令如 "shardCollection" 或 "enableSharding"

Cannot run commands like "shardCollection" or "enableSharding"

我继承了一个项目来维护。显然,决定从 CosmosDb 切换到专用 MongoDb。 CI 管道中有一个项目用 collections 播种 mongo 数据库并创建索引。现在它是用这样的命令完成的:

var partition = new Dictionary<string, object> {
    {"shardCollection", $"{databaseName}.{collectionName}"},
    { "key", new Dictionary<string, object>() { { $"{indexName}", "hashed" } } }
};
var command = new BsonDocumentCommand<BsonDocument>(partition);
var response = adminDb.RunCommand(command);

这在我的机器上不起作用 - 我得到 Command shardCollection failes: no such command 'shardCollection'.

知道我做错了什么吗?我在其他地方找到了该代码的示例作为工作代码,但我很困惑。

更新 1

在我的 collections 上设置分片之前,我也试过 运行 这个命令:

var shardDbResult = adminDatabase.RunCommand<MongoDB.Bson.BsonDocument>(
    new MongoDB.Bson.BsonDocument() { 
        { "enableSharding", $"{databaseName}" } 
 });

但我也遇到了类似的错误Command enableSharding failes: no such command 'enableSharding'。我什至尝试过 mongosh:

更新 2

所以最终我认为这可能与我的 MongoDb 安装有关。所以我决定在 docker 中启动一个分片副本集,显然我设法做到了 运行。 现在命令:

db.adminCommand({enableSharding: "<databaseName>"})

工作正常(至少打印报告:ok: 1)。此命令也可以正常工作:

db.adminCommand({shardCollection: "<databaseName>.<collectionName>", key: {<fieldName>: 1}})

但是问题顶部的代码不断失败并显示相同的消息...

版本:

我用分片集群完全错误地设置了我的副本集。一旦我使用了从 部署 mongodb 分片集群的说明,我的代码就开始工作了。