2012-06-04 1 views
1

У меня есть приложение Rails 3 с использованием MongoDB, с Mongoid как ORM. Я хотел бы запросить конкретное поле в коллекции.Как я могу запросить конкретное поле коллекции MongoDB внутри Rails Console?

Для запроса всех записей конкретной коллекции я использую User.all.to_a в качестве эквивалента User.all в ActiveRecord.

Теперь я хотел бы запросить все записи в коллекции, но вывести только определенное поле. В этом случае я хотел бы видеть все имена пользователей. Как мне это сделать?

Я уверен, что я смотрел прямо на это в документации Mongoid, и я просто не хватает что-то ...

ответ

1

Я не мог найти его в новой документации для Mongoid, но вот быстрая ссылка до only, указывая на старую документацию 2.xx.

В основном вам нужно сделать:

User.all.only(:name).to_a 
+1

не работает для меня ... как 'User.all.only (: имя) .to_a' и' User.only (: имя) .to_a 'выгружать массив всех документов пользователя, включая все связанные поля. Если вы делаете что-то вроде 'User.all.distinct (: name)', он дает мне вывод только соответствующего поля имени. Не знаете, почему ваше предложение не работает. Похоже, это должно ... – Joe

+0

Так оно и работает в Mongoid, вы не получите только поле, значения, но каждый документ только с заполненным полем. Вы всегда можете сопоставить массив, но это может быть неэффективным, в зависимости от вашего контекста. Что-то вроде: 'User.only (: name) .all.to_a.map {| u | u.name} '. – theTRON

+0

@ J.Venator с использованием 'only', только указанные поля возвращаются из db в виде документа, а mongoid обертывает их в экземпляре Model. 'distinct' однако возвращает массив только указанных значений. Возможно, я не понял этот вопрос, и вам нужно «отличное» – rubish

Смежные вопросы