使用.net/c#的mongodb驱动程序访问用户信息的正确方式

本文关键字:信息 用户 方式 访问 驱动程序 net mongodb 使用 | 更新日期: 2023-09-27 18:29:14

当我写这行代码时(C#使用mongodb驱动程序):

var mongoDB = ...
var result = mongoDB.FindUser("ruprecht");

我得到一个警告,我应该"使用新的用户管理命令"usersinfo"。但我找不到如何做到这一点的例子。

我现在只使用不推荐使用的命令,但我想知道正确的方法。

使用.net/c#的mongodb驱动程序访问用户信息的正确方式

我意识到这个线程已经有几年的历史了,但这是一个我很难找到答案的问题,所以我想为了未来的谷歌用户,我会回答这个问题

您的代码:

您的尝试很接近,但不是RunCommand所寻找的语法。如果您查看"参考"页面(https://docs.mongodb.org/manual/reference/command/usersInfo/),Mongo-Shell的语法如下:

Mongo Shell代码:

{ usersInfo: { user: <name>, db: <db> },
  showCredentials: <Boolean>,
  showPrivileges: <Boolean>
}

当我们把它翻译成C#时,它有点复杂,但它看起来像这样。

C#代码:

command = new CommandDocument
    {
        {"usersInfo", new BsonDocument
            {
                {"user", "reprecht"},
                {"db", "myDatabaseName"}
            }
        }
    };
myOpenDb.RunCommand (command)

请注意其中的new BsonDocument部分。在嵌套括号的情况下,通常需要这样做。

另一个例子:

为了完整起见,让我们看看另一个例子,假设您想添加一个新用户。这里的文档显示如下:

Mongo Shell代码:

{ createUser: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ],
  writeConcern: { <write concern> }
}

因此,忽略可选的customData和writeConcern,我们可以在C#中这样写:

C#代码:

command = new CommandDocument
{
    {"createUser", "myUser"},
    {"pwd", "myPassword"},
    {"roles", new BsonArray 
        {
            new BsonDocument
            {
                {"role", "readWrite"},
                {"db", "myDatabaseName"}
            }
        }
    }
};

再次注意,我们使用new BsonArray创建了一个数组,类似于shell代码中的数组。

希望这能给你一个好的起点。您应该能够以这种方式执行任何命令,尽管这更多的是我的猜测/希望,而不是我已经广泛测试过的。

您使用MongoDB的RunCommand方法和usersInfo命令,如下所示:http://docs.mongodb.org/manual/reference/command/usersInfo/#dbcmd.usersInfo.