Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails MongoMapper运行简单的MongoDB查询_Ruby On Rails_Ruby_Mongodb_Mongomapper - Fatal编程技术网

Ruby on rails MongoMapper运行简单的MongoDB查询

Ruby on rails MongoMapper运行简单的MongoDB查询,ruby-on-rails,ruby,mongodb,mongomapper,Ruby On Rails,Ruby,Mongodb,Mongomapper,我正在运行一个Rails应用程序,并使用MongoDB作为数据库存储。对于数据映射部分,我使用MongoMapper gem 如果我想模仿ActiveRecord模型的功能,MongoMapper非常好,但我的问题是,是否可以通过MongoMapper运行简单的MongoDB查询,比如直接查询集合(即没有显式模型,谁包含字段等等),或者我应该使用MongoGem for ruby 谢谢你我主要是从 否则,我想您应该使用from_uri构造函数来构建自己的连接 然后您需要获得数据库,您可以使用数组

我正在运行一个Rails应用程序,并使用MongoDB作为数据库存储。对于数据映射部分,我使用MongoMapper gem

如果我想模仿ActiveRecord模型的功能,MongoMapper非常好,但我的问题是,是否可以通过MongoMapper运行简单的MongoDB查询,比如直接查询集合(即没有显式模型,谁包含字段等等),或者我应该使用MongoGem for ruby

谢谢你

我主要是从 否则,我想您应该使用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 = 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::光标,它指向您感兴趣的数据。Mongo::Cursor是一个可枚举的对象,因此您可以访问所有常用的迭代好友,例如each、first、map和我的个人收藏夹之一,每个带有对象的\u:

a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
可能重复的
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }