У меня есть приложение Rails 3 с использованием MongoDB, с Mongoid как ORM. Я хотел бы запросить конкретное поле в коллекции.Как я могу запросить конкретное поле коллекции MongoDB внутри Rails Console?
Для запроса всех записей конкретной коллекции я использую User.all.to_a
в качестве эквивалента User.all
в ActiveRecord.
Теперь я хотел бы запросить все записи в коллекции, но вывести только определенное поле. В этом случае я хотел бы видеть все имена пользователей. Как мне это сделать?
Я уверен, что я смотрел прямо на это в документации Mongoid, и я просто не хватает что-то ...
не работает для меня ... как 'User.all.only (: имя) .to_a' и' User.only (: имя) .to_a 'выгружать массив всех документов пользователя, включая все связанные поля. Если вы делаете что-то вроде 'User.all.distinct (: name)', он дает мне вывод только соответствующего поля имени. Не знаете, почему ваше предложение не работает. Похоже, это должно ... – Joe
Так оно и работает в Mongoid, вы не получите только поле, значения, но каждый документ только с заполненным полем. Вы всегда можете сопоставить массив, но это может быть неэффективным, в зависимости от вашего контекста. Что-то вроде: 'User.only (: name) .all.to_a.map {| u | u.name} '. – theTRON
@ J.Venator с использованием 'only', только указанные поля возвращаются из db в виде документа, а mongoid обертывает их в экземпляре Model. 'distinct' однако возвращает массив только указанных значений. Возможно, я не понял этот вопрос, и вам нужно «отличное» – rubish