find_by_sql相当于mongoid?

时间:2010-09-16 20:01:32

标签: ruby mongodb mongoid

mongoid是否有某种类型的find_by_sql等价物,你传递mongo查询并从结果中实现Mongoid :: Document?

2 个答案:

答案 0 :(得分:8)

Mongoid包装Collection对象以返回正确类的对象。

因此,如果User是Mongoid模型:

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

编辑添加:它实际上也包装了Mongo的Cursor类。 See here:

def each
  @cursor.each do |document|
    yield Mongoid::Factory.build(@klass, document)
  end
end

答案 1 :(得分: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