这里有一个(可能)更好的关于如何直接进入 MongoDB 内部的迷你教程。这可能无法解决您的具体问题,但它应该可以让您了解 SELECT * FROM table 的 MongoDB 版本。
首先,您需要一个Mongo::Connection 对象。如果
您正在使用MongoMapper,那么您可以拨打connection
任何 MongoMapper 模型上的类方法以获取连接
或直接向 MongoMapper 索取:
connection = YourMongoModel.connection
connection = MongoMapper.connection
否则我猜你会使用 from_uri 构造函数来构建
您自己的连接。
然后你需要掌握一个数据库,你可以这样做
使用array access notation、db 方法,或获取
当前直接来自 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.
现在您手中有一个漂亮闪亮的Mongo::DB 实例。
但是,您可能希望 Collection 做任何有趣的事情
您可以使用数组访问表示法或
collection方法:
collection = db['collection_name']
collection = db.collection('collection_name')
现在你有了一些行为类似于 SQL 表的东西,所以
你可以count它有多少东西或使用find查询它:
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
现在你得到了你真正想要的东西:从烤箱里拿出来热乎乎的 Mongo::Cursor
指向您感兴趣的数据。Mongo::Cursor 是
Enumerable 这样您就可以访问所有常用的迭代
each、first、map 等朋友和我的一位
收藏,each_with_object:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Mongo::DB 上还有 command 和 eval 方法可以满足您的需求。