Aqui está um mini-tutorial (possivelmente) melhor sobre como entrar diretamente nas entranhas do seu MongoDB. Isso pode não resolver seu problema específico, mas deve levá-lo até a versão MongoDB de
SELECT * FROM table
. Primeiro de tudo, você vai querer um
Mongo::Connection
objeto. Se você estiver usando o MongoMapper, poderá chamar a connection
class em qualquer um dos seus modelos MongoMapper para obter uma conexão ou peça diretamente ao MongoMapper:connection = YourMongoModel.connection
connection = MongoMapper.connection
Caso contrário, acho que você usaria o
from_uri
construtor para construir sua própria conexão. Então você precisa colocar as mãos em um banco de dados, você pode fazer isso usando a notação de acesso ao array, o
db
ou obtenha o atual direto do MongoMapper:db = connection['database_name'] # This does not support options.
db = connection.db('database_name') # This does support options.
db = MongoMapper.database # This should be configured like
# the rest of your app.
Agora você tem um belo e brilhante
Mongo::DB
instância em suas mãos. Mas, você provavelmente quer uma Collection
para fazer qualquer coisa interessante e você pode obter isso usando a notação de acesso de matriz ou a collection
método:collection = db['collection_name']
collection = db.collection('collection_name')
Agora você tem algo que se comporta como uma tabela SQL para que você possa
count
quantas coisas ele tem ou consulte usando find
:cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
E agora você tem o que realmente procura:um quentinho saindo do forno
Mongo::Cursor
que aponta para os dados nos quais você está interessado. Mongo::Cursor
isan Enumerable
para que você tenha acesso a todos os seus amigos iterativos habituais, como each
, first
, map
, e um dos meus favoritos pessoais, each_with_object
:a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Existem também
command
e eval
métodos em Mongo::DB
que pode fazer o que você quer.