我正在运行一个Rails应用程序,并使用MongoDB作为数据库存储。对于数据映射部分,我使用MongoMapper gem。
如果我想模仿ActiveRecord模型的功能,MongoMapper是很棒的,但我的问题是,是否可以通过MongoMapper运行简单的MongoDB查询,比如直接查询集合(即没有显式的模型,谁包括字段等),或者我应该使用ruby的mongo gem吗?
谢谢
发布于 2012-08-15 02:20:05
我主要是从How to fire raw MongoDB queries directly in Ruby那里偷的
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是一个可枚举型,因此您可以访问所有常见的迭代朋友,如each、first、map和我个人最喜欢的each_with_object:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }https://stackoverflow.com/questions/7996342
复制相似问题