@ber_enot
Веб-разработчик, Vue.js / Node.js

Как получить только одно поле mongodb в fat-free framework?

Помогите, пожалуйста. Можно ли каким-нибудь неведомым образом получить из MongoDB только одно (или несколько) поле, а не все сразу? Или она так устроена, что возвращает весь документ? Просто это лишние данные, и если мне нужно только значение 'passhash', грузить весь объект глупо.
В SQL аналог: SELECT `passhash` FROM ...
В документации примера не нашел.
Данные загружаются так:
$db=new DB\Mongo('mongodb://localhost:27017','testdb');
$user=new DB\Mongo\Mapper($db,'users');
$user->load(array('login'=>'admin')); // подозреваю что при вызове грузится весь документ
echo $user->passhash; // выведет значение поля passhash
  • Вопрос задан
  • 1340 просмотров
Решения вопроса 2
@Kano
Пользуйтесь проекциями при фильтрации ссылка
db.things.find({}, {passhash:true})
Ответ написан
@ber_enot Автор вопроса
Веб-разработчик, Vue.js / Node.js
Решил проблему!
Вот решение:
$db = new DB\Mongo('mongodb://localhost:27017','testdb');
$users = new DB\Mongo\Mapper($db,'users');
$userList = $users->select(array('passhash'=>1),array('login'=>'admin'));
echo count($userList)."\n"; # кол-во найденных документов
foreach ($userList as $obj) {
	echo $obj->_id.', '.$obj->passhash; #вывод _id и пароля
}

Загружает только поля, указанные в $fields:
// синтаксис
array select( [ string $fields = NULL [, array $filter = NULL [, array $options = NULL [, int $ttl = 0 ]]]] )

Спасибо Kano за подсказку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы