Как получить одно значение из MongoDB с помощью PHP?

#php #mongodb

#php #mongodb

Вопрос:

Итак, у меня есть следующий код для получения документа из коллекции в моей базе данных:

 $manager = new MongoDBDriverManager('mongodb srv://<username>:<password>@cluster0.hyqa4.mongodb.net/academic?retryWrites=trueamp;w=majority');
$filter = ['username' => $uname];
$options = ['projection' => ['_id' => 0]];
$query = new MongoDBDriverQuery($filter, $options); 
$cursor = $manager->executeQuery("academic.users", $query); 

foreach($cursor as $document) {
  print_r($document);
}

  

Я могу успешно получить документ путем поиска имени пользователя, поэтому, если $uname — это «Jon», я получаю следующий вывод:

 stdClass Object ( [username] => Jon [email] => Jon@mail.com [passwd] => pass123 ) 
  

Однако то, что я хочу сделать, это просто вернуть одно значение из документа, поэтому, если бы я хотел получить значение для электронной почты, оно вернуло бы:

 Jon@mail.com
  

… тогда я мог бы сохранить это значение как переменную.
Как бы я это сделал?

Комментарии:

1. И не храните пароль в виде обычного текста. Примените некоторое шифрование

Ответ №1:

Доступ к объектам класса Std можно получить через -> оператор. Таким образом, пользователь может $document->email получить доступ к отдельной электронной почте. Это то, что вы ищете

 $manager = new MongoDBDriverManager('mongodb srv://<username>:<password>@cluster0.hyqa4.mongodb.net/academic?retryWrites=trueamp;w=majority');
$filter = ['username' => $uname];
$options = ['projection' => ['_id' => 0]];
$query = new MongoDBDriverQuery($filter, $options); 
$cursor = $manager->executeQuery("academic.users", $query); 

foreach($cursor as $document) {
  print_r($document->email);
}