Voici un (éventuellement) meilleur mini-tutoriel sur la façon d'entrer directement dans les entrailles de votre MongoDB. Cela ne résoudra peut-être pas votre problème spécifique, mais cela devrait vous amener jusqu'à la version MongoDB de SELECT * FROM table
.
Tout d'abord, vous aurez besoin d'un Mongo::Connection
objet. Si vous utilisez MongoMapper, vous pouvez appeler la connection
méthode de classe sur l'un de vos modèles MongoMapper pour obtenir une connexion ou demandez-la directement à MongoMapper :
connection = YourMongoModel.connection
connection = MongoMapper.connection
Sinon, je suppose que vous utiliseriez le from_uri
constructeur pour construire votre propre connexion.
Ensuite, vous devez mettre la main sur une base de données, vous pouvez le faire en utilisant la notation d'accès au tableau, le db
ou récupérez la méthode actuelle directement depuis 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.
Vous avez maintenant un joli Mongo::DB
brillant instance entre vos mains.Mais, vous voulez probablement une Collection
pour faire quelque chose d'intéressant et vous pouvez l'obtenir en utilisant la notation d'accès au tableau ou la collection
méthode :
collection = db['collection_name']
collection = db.collection('collection_name')
Vous avez maintenant quelque chose qui se comporte un peu comme une table SQL afin que vous puissiez count
combien de choses il a ou interrogez-le en utilisant find
:
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
Et maintenant vous avez ce que vous recherchez vraiment :une sortie de four bien chaude Mongo::Cursor
qui pointe vers les données qui vous intéressent. Mongo::Cursor
est un Enumerable
vous avez donc accès à tous vos amis d'itération habituels tels que each
, first
, map
, et l'un de mes favoris personnels, each_with_object
:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Il y a aussi la command
et eval
méthodes sur Mongo::DB
cela pourrait faire ce que vous voulez.