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.