эквивалент find_by_sql для mongoid? - PullRequest
5 голосов
/ 17 сентября 2010

Есть ли какой-нибудь аналог find_by_sql для mongoid, когда вы передаете запрос на монго, и он материализует Mongoid :: Document s из результатов?

Ответы [ 2 ]

8 голосов
/ 17 сентября 2010

Mongoid переносит объект Collection для возврата объектов соответствующего класса.

Итак, если пользователь является моделью Mongoid:

cursor = User.collection.find({}, {}) # Just like the Ruby driver...
records = cursor.to_a # An array of User objects

Редактировать, чтобы добавить: На самом деле это класс Cursor Mongoтоже. Смотрите здесь:

def each
  @cursor.each do |document|
    yield Mongoid::Factory.build(@klass, document)
  end
end
2 голосов
/ 09 июля 2013

Если вы используете Mongoid 3, он обеспечивает легкий доступ к драйверу MongoDB: Мопед .Вот пример доступа к некоторым необработанным данным без использования моделей для доступа к данным:

db = Mongoid::Sessions.default
collection = db[:collection_name]

# finding a document
doc = collection.find(name: 'my new document').first

collection.find.each do |document|
  puts document.inspect
end
...