使用.net/c#的mongodb驱动程序访问用户信息的正确方式
本文关键字:信息 用户 方式 访问 驱动程序 net mongodb 使用 | 更新日期: 2023-09-27 18:29:14
当我写这行代码时(C#使用mongodb驱动程序):
var mongoDB = ...
var result = mongoDB.FindUser("ruprecht");
我得到一个警告,我应该"使用新的用户管理命令"usersinfo"。但我找不到如何做到这一点的例子。
我现在只使用不推荐使用的命令,但我想知道正确的方法。
我意识到这个线程已经有几年的历史了,但这是一个我很难找到答案的问题,所以我想为了未来的谷歌用户,我会回答这个问题
您的代码:
您的尝试很接近,但不是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.