Есть ли какой-то эквивалент find_by_sql для mongoid, где вы передаете запрос mongo, и он материализует Mongoid :: Document s из результатов?find_by_sql эквивалент для mongoid?
5
A
ответ
8
Mongoid обертывает объект Collection, чтобы возвращать объекты соответствующего класса.
Таким образом, если пользователь является модель Mongoid:
cursor = User.collection.find({}, {}) # Just like the Ruby driver...
records = cursor.to_a # An array of User objects
Изменить, чтобы добавить: Это на самом деле обертывания класса Cursor Монго тоже. See here:
def each
@cursor.each do |document|
yield Mongoid::Factory.build(@klass, document)
end
end
2
Если вы используете Mongoid 3, он обеспечивает легкий доступ к своему драйверу MongoDB: Moped. Ниже приведен пример доступа к некоторым исходным данным без использования моделей для доступа к данным:
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
это абсолютно потрясающе! знаете ли вы, как гонщик-гонщик знает, как материализовать мой класс mongoid? –