当前位置: 首页 > 知识库问答 >
问题:

如何直接从Ruby查询MongoDB而不是使用Mongoid?

孟品
2023-03-14

我正在为使用MongoDB和Mongoid的Rails应用程序编写迁移。我的迁移目前使用使用Mongoid查询和更新记录的模型,但性能低于标准。我基本上更新了一个大型集合中的所有记录,并进行了n 20次查询。在本地运行了一个小时后,我终止了迁移(但没有完成)。我希望能够不费吹灰之力地运行对mongo的原始查询。我假设有某种方法可以从Mongoid访问mongo驱动程序,因为Mongoid已经加载了到数据库的连接。如何访问数据库以直接运行更新查询?

共有3个答案

郎俊雅
2023-03-14

这是你怎么做的(这也适用于2和3)

1) 您的所有模型都表现出这种行为,您在所有模型中都包含Mongoid::Document,因此从技术上讲,每个文档都通过Mongoid映射到monogodb-through-moped或mongodb-ruby驱动程序中

所以如果你有这样的模型

class PerformerSource 
  include Mongoid::Document
  ## Definition

end

现在可以使用如下驱动程序(Moped或Mongodb ruby驱动程序)运行Mongo Query

PerformerSource.collection.insert("something")
## where something is json document you want to insert

这将为该文档提供moped(如果使用mongoid 3)连接

2) 你也可以这样做

 Mongoid::Sessions.default.collections.find { |document| document.name == "performer_sources"}.insert("something")

如何更多地了解mongo查询以及mongoid如何映射那些使用moped u的人可以遵循查询的这一部分,它描述了如何通过moped在内部访问查询

希望这能有所帮助

长孙德惠
2023-03-14
db = Mongoid::Clients.default

collection = db[:collection_name]

现在,我们可以对集合执行查询

丌官高远
2023-03-14

如果您使用的是Mongoid 3,它可以方便地访问其MongoDB驱动程序:Moped。下面是一个在不使用模型访问数据的情况下访问一些原始数据的示例

db = Mongoid::Sessions.default

# inserting a new document
collection = db[:collection_name]
collection.insert(name: 'my new document')

# finding a document
doc = collection.find(name: 'my new document').first

# iterating over all documents in a collection
collection.find.each do |document|
  puts document.inspect
end
 类似资料:
  • 本文向大家介绍如何使用LIMIT查询MongoDB?,包括了如何使用LIMIT查询MongoDB?的使用技巧和注意事项,需要的朋友参考一下 使用limit()方法查询MongoDB。让我们创建一个包含文档的集合 在find方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是在MongoDB中使用LIMIT的查询- 这将产生以下输出-

  • 问题内容: 我一直在阅读几篇文章,介绍什么是什么以及支持它的供应商(DataNucleus,JBoss Hibernate等) 我没有ORM(对象关系映射)的经验。 到目前为止,我所做的就是使用DTO和DAO编写自己的数据库类。到目前为止,我对我所拥有的感到满意,但是想知道 为什么人们使用JPA而不是包含SQL的Java文件 。 对我来说,我觉得编写DAO类可以像下面这样。 我了解到JPA使用JP

  • 问题内容: 我想用SQLlike查询来查询一些东西: 我如何在MongoDB中实现相同目标?我like在文档中找不到运算符。 问题答案: 那必须是: 或类似: 您正在寻找某种在某处包含“ m”的东西(SQL的运算符等效于Regexp的),而不是在字符串的开头固定了“ m”的东西。 注意: mongodb使用的正则表达式比sql中的“ LIKE”更强大。使用正则表达式,您可以创建您想像的任何模式。

  • 问题内容: 我想用SQL查询来查询一些东西: 如何在MongoDB中实现相同目标?我在文档中找不到运算符。 问题答案: 那必须是: 或类似: 您正在寻找某种在某处包含“ m”的东西(SQL的’ ‘运算符等效于Regexp的’ ‘),而不是在字符串的开头锚定了“ m”的事物。 注意: mongodb使用的正则表达式比sql中的“ LIKE”更强大。使用正则表达式,您可以创建您想像的任何模式。 有关正

  • 问题内容: 有人可以简单地说明如何使jQuery发送实际的JSON而不是查询字符串吗? 实际上,这会将您精心准备的JSON转换为查询字符串。令人讨厌的事情之一是,对象中的任何内容都将转换为,这可能是由于查询字符串的限制所致。 问题答案: 您需要使用,首先将您的对象序列化为JSON,然后指定,以便您的服务器理解为JSON。这应该可以解决问题: 请注意,该对象在支持JavaScript 1.7 / E

  • 我想安慰一下。log()记录mongodb数据库查询的结果,无需进入mongo shell。下面是我的代码。相关部分以粗体显示。 我尝试过: console.dir(),但返回 [object, object]。我尝试过 print() 和 printjson(),但这些都是 mongo shell 独有的命令。 最终结果应该是,当用户通过put请求更改名称时,首先它将存储在数据库中的旧名称记录到