#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);
}