2013-08-12 2 views
2

Мне нужно указать всех пользователей, имеющих доступ к MongoDB, но через PHP. В принципе то же самое, как если бы вы были сделать следующее из Монго оболочки:«Показать пользователей» от MongoDB в PHP

> 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 без удачи. У кого-нибудь есть идеи?

ответ

0

Это только показывает первый пользователь. Не перечислены все из них. Например:

$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 
     ) 

) 

Вместо всех пользователей базы данных.

0

Для чего мне пришлось вырваться из команды больше. Это отлично работает:

$users = $conn->$db_name->selectCollection('system.users')->find(); 

foreach ($users as $user) { 
    var_dump($user); 
} 
Смежные вопросы