Aquí hay un (posiblemente) mejor mini-tutorial sobre cómo entrar directamente en las entrañas de su MongoDB. Esto podría no resolver su problema específico, pero debería llegar hasta la versión MongoDB de SELECT * FROM table
.
Antes que nada, querrá un objeto Mongo::Connection
. Si estás usando MongoMapper entonces se puede llamar al método connection
clase en cualquiera de sus modelos MongoMapper para conseguir una conexión o pedir MongoMapper por ella directamente:
connection = YourMongoModel.connection
connection = MongoMapper.connection
De lo contrario supongo que tendría que utilizar el from_uri
constructor para construir su propia conexión.
Luego hay que conseguir sus manos en una base de datos, puede hacerlo utilizando el array access notation, el método db
, o conseguir la actual directamente desde 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.
Ahora usted tienen un buen instancia brillante Mongo::DB
en sus manos. embargo, es probable que quieren un Collection
para hacer algo interesante y usted puede conseguir que el uso de la notación de acceso a matriz o el método collection
:
collection = db['collection_name']
collection = db.collection('collection_name')
Ahora usted tiene algo que se comporta como una especie de tabla de SQL por lo puede count
la cantidad de cosas que tiene o consultar utilizando find
:
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
Y ahora usted tiene lo que realmente después: una caliente fuera del horno. que apunta a los datos que le interesa es Mongo::Cursor
un Enumerable
por lo que tiene acceso a toda su iteración habitual amigos como each
, first
, map
, y uno de mis favoritos personales , each_with_object
:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
también hay command
eval
y métodos en Mongo::DB
que podría hacer lo que quiere.
Tal respuesta ordenada !!! – bragboy
¿qué versión de mongoid es esto? – Brandt
@newdark No veo ninguna referencia a Mongoid allí arriba. Que se basaba en cualquier versión de MongoMapper era actual hace seis años, que yo sepa utilizar la interfaz de Rubí directamente de la gente MongoDB. –