我正在运行Rails应用程序并使用MongoDB作为数据库存储。对于数据映射部分,我使用MongoMapper gem。
如果我想模仿ActiveRecord模型的功能,MongoMapper很棒,但我的问题是,是否可以通过MongoMapper运行简单的MongoDB查询,比如直接查询集合(即没有显式模型,包括字段等)或者我应该使用mongo gem for ruby?
谢谢
答案 0 :(得分:0)
connection = MongoMapper.connection
否则我猜你会使用from_uri构造函数来构建自己的连接。
然后你需要掌握一个数据库,你可以使用数组访问表示法,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 = db['collection_name']
collection = db.collection('collection_name')
现在你的某些行为有点像SQL表,所以你可以计算它有多少东西或使用find查询它:
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
输出一行
cursor.each { |row| puts row }
现在你已经拥有了你真正追求的东西:一个热门的烤箱Mongo :: Cursor指向你感兴趣的数据.Mongo :: Cursor是一个Enumerable,所以你可以访问你所有的平常迭代朋友,比如每个人,第一个,地图,以及我个人的最爱之一,each_with_object:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }