我需要列出所有通过PHP访问MongoDB的用户。基本上与你在mongo shell中执行以下操作相同:
> use test
switched to db test
> show users
{
"_id" : ObjectId("51f74b1c9d8036288ae01e98"),
"user" : "admin",
"pwd" : "cc4fa5214a55925052f2892be6feb470",
"roles" : [
"readWrite",
"dbAdmin"
]
}
{
"_id" : ObjectId("52085c1dc9f60326cb20cb37"),
"user" : "user_name",
"pwd" : "ec416be9a5e17fbe48a7ceb93e63ecba",
"roles" : [
"readWrite",
"dbAdmin"
]
}
{
"_id" : ObjectId("52085c35c9f60326cb20cb38"),
"user" : "test_user",
"pwd" : "bf7a0adf9822a3379d6dfb1ebd38b92e",
"roles" : [
"readWrite"
]
}
我尝试过使用PHP内置的execute命令,但没有遇到任何问题。有人有什么想法吗?
您想要使用system.users
集合,我相信(http://docs.mongodb.org/manual/reference/privilege-documents/)像这样:
foreach($db->selectCollection('system.users')->find() as $user)
var_dump($user);
它只显示第一个用户。没有列出所有的。例如:
$db_name = "test"
echo "Database Name: $db_name <br />";
foreach($conn->$db_name->selectCollection('system.users')->find() as $users);
var_dump($users);
输出
Database Name: test <br />
Array
(
[_id] => MongoId Object
(
[$id] => 52085c35c9f60326cb20cb38
)
[user] => test_user
[pwd] => bf7a0adf9822a3379d6dfb1ebd38b92e
[roles] => Array
(
[0] => readWrite
)
)
而不是数据库中的所有用户。
不管怎样,我都必须更多地分解命令。这很好:
$users = $conn->$db_name->selectCollection('system.users')->find();
foreach ($users as $user) {
var_dump($user);
}