@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
  • Вопрос задан
  • 1235 просмотров
Решения вопроса 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 за подсказку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽