问题标签 [mongodb-ruby]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 使用 SSL 通过 Ruby 驱动程序连接到 Mongod 会返回 Mongo::ConnectionFailure
我想在 MongoDB 中使用 SSL。默认情况下未启用它,因此必须使用必要的选项从源代码编译。我按照官方 文档进行了构建,并在新部署的运行 Ubuntu 14.04 的服务器上构建并运行良好的 v2.6.4 二进制文件。到目前为止一切都很好。
接下来我按照官方文档中的描述设置 mongod 。我确实遵循了他们使用自认证密钥进行测试的示例。配置的相关部分如下所示:
如果我然后运行客户端并指定使用 SSL,我可以正常连接。( $ mongo --ssl
)。FWIW,如果我尝试不使用--ssl
参数,则它不会连接。
好的,是时候通过 Ruby 进行链接了。我在同一台服务器上,我尝试以下 ruby 脚本:
没有。它没有它:
所以最好确保没有 SSL 的默认连接没有问题。我在 mongod 上禁用 SSL 并重新启动。然后再次尝试 ruby 脚本,这次没有 ssl 选项:
没关系。因此,我觉得我已将其范围缩小到 ruby 驱动程序和 ssl,但除此之外,几乎没有其他可做的了。
编辑我在同一台服务器上尝试了他们的 Python 驱动程序并使用了他们的示例程序:
那确实可以连接。所以至少我可以相当确信 mongod 配置正确,问题出在 Mongo Ruby 驱动程序的某个地方。他们当前的驱动程序(v1.11.1)中很可能存在错误。
更新我也使用 node.js 驱动程序通过 ssl 成功连接:
似乎越来越有可能是 ruby 驱动程序中存在错误,或者文档不完整并且没有准确解释如何使用 SSL 连接。因此,我在 MongoDB 的问题跟踪器上打开了一个新问题,希望能够深入了解这一点。
ruby - Insert an array of Ruby objects in a Mongo database
So, I'm using the Ruby MongoDB driver and I want to insert and object like this:
where @board is an instance of a Board class.
and Tile
So at the end, 'tiles' field should look like this:
I'm getting this error:
The gems I'm using: 'sinatra', 'mongo (2.0.4)' and 'bson_ext' (all required using Bundler.require). Thanks!
mongodb - mongodb集群中多个mongos实例之间的负载均衡
我有几个 mongos 实例。我有 ruby 和 node.js 应用程序。我可以将所有 mongos 实例的主机放到 mongodb 连接 URI 中。ruby 和 node.js 驱动程序可以处理故障转移。但是这两个驱动程序可以在多个 mongos 实例之间进行平衡吗?为什么文档建议我们将每个应用程序仅用于一个 mongos 实例。光标大小问题,还有其他原因吗?那么我可以将几个 mongos 主机放在一个 URI 中吗?
有没有为生产中的多个 mongos 实例设置独立负载均衡器的示例?
ruby-on-rails - 在 mongo ruby 驱动程序中使用 DBRef: (undefined method `bson_type' for #)
当我尝试在 mongo ruby 驱动程序中使用 DBRef 时(创建一个新的 DBRef 对象并包含在我要插入到集合中的文档中),我得到了这个错误,我无法做出正面或反面:
这是有问题的代码:
第 39 行是代码片段中倒数第二行。
mongodb - 如何在 MongoDB (Ruby) 中更新 1 行数据
如果我有以下代码用于使用 mongodb 插入数据,我该如何更新它的值。我对 update_one/update_many 函数中的参数设置感到困惑。
我没有做更新功能。请帮忙!
ruby-on-rails - Ruby Mongo 驱动程序投影 Elemmatch
按照http://www.w3resource.com/mongodb/mongodb-elemmatch-projection-operators.php中的代码,我使用 ruby mongodb 驱动程序建立了一个测试数据库。
对于那些在家跟随的人,您首先需要按照https://docs.mongodb.com/ecosystem/tutorial/ruby-driver-tutorial/#creating-a-client中的说明安装 mongo 驱动程序,然后运行以下命令.
客户端 = Mongo::Client.new([ '127.0.0.1:27017'], :database => 'mydb')
测试=客户端['测试']
doc = { "_id" => 1, "batch" =>10452, "tran_details" =>[ { "qty" =>200, "prate" =>50, "mrp" =>70 }, { "qty" =>250, "prate" =>50, "mrp" =>60 }, { "qty" =>190, "prate" =>55, "mrp" =>75 } ] }
test.insert_one(doc)
插入在 w3 教程中创建的所有不同文档。
如果您查看 w3 教程中的示例 2,翻译后的 ruby find 是:
test.find({"batch" => 10452}).projection({"tran_details" => {"$elemMatch" => {"prate" => 50, "mrp" => {"$gte" => 70 }}}}).to_a
它返回与示例中相同的结果。
=> [{"_id"=>1, "tran_details"=>[{"qty"=>200, "prate"=>50, "mrp"=>70}]}, {"_id"=>3} , {"_id"=>4}]
我的问题是我想用上面的约束(mrp gte 70 等)约束结果,同时还指定返回哪些字段。
例如,仅约束具有 mrp gte 70 的 tran_details,但在返回的结果中仅包含 prate 字段(或字段的任何子集)。
我只能使用查询返回 prate 字段:
test.find({"batch" => 10452}).projection({"tran_details.prate" => 1}).to_a
我想将两种不同投影的效果结合起来,但我还没有看到任何关于如何在网上做到这一点的文档。如果将两个投影串在一起,则只有最终的投影有效果。
mongodb - MongoDB 为计数查询返回错误的结果
集合的总计数小于过滤计数。诡异的。如果有人可以帮忙???TIA
mongodb - 来自 mongoid 的零星 NoServerAvailable 错误
在生产环境中,我们会得到源源不断的看似随机的 Mongo::Error::NoServerAvailable 错误。可能一天3个。
有问题的副本集没有经历过任何选举,在这些情节中它的表现并没有什么不寻常的地方。
这是完整的例外:
这是堆栈跟踪的 mongoid 部分:
ruby - 查找 Mongo::Collection::View 的大小
我正在尝试在 MongoDB 和 ruby 中查找查询结果的大小:
但是,当我运行它时,我收到以下错误:
如何正确确定此查询返回的项目数?我在文档中找不到任何信息。
mongodb - $all 不适用于数组
我正在尝试获取submissions
包含tags
数组中列出的所有内容的所有文档。
我当前的代码如下所示:
但是,在运行时,我在第二行收到以下错误:
还应该注意的是,以下内容确实可以正常工作(尽管它没有达到我想要的结果):
如何修复我的原始代码以正确找到所需的文档?