";显示用户";来自PHP中的MongoDB


"Show Users" from MongoDB in PHP

我需要列出所有通过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);
}