问题标签 [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.

0 投票
1 回答
912 浏览

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 的问题跟踪器上打开了一个新问题,希望能够深入了解这一点。

0 投票
1 回答
1234 浏览

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!

0 投票
0 回答
742 浏览

mongodb - mongodb集群中多个mongos实例之间的负载均衡

我有几个 mongos 实例。我有 ruby​​ 和 node.js 应用程序。我可以将所有 mongos 实例的主机放到 mongodb 连接 URI 中。ruby 和 node.js 驱动程序可以处理故障转移。但是这两个驱动程序可以在多个 mongos 实例之间进行平衡吗?为什么文档建议我们将每个应用程序仅用于一个 mongos 实例。光标大小问题,还有其他原因吗?那么我可以将几个 mongos 主机放在一个 URI 中吗?

有没有为生产中的多个 mongos 实例设置独立负载均衡器的示例?

0 投票
1 回答
382 浏览

ruby-on-rails - 在 mongo ruby​​ 驱动程序中使用 DBRef: (undefined method `bson_type' for #)

当我尝试在 mongo ruby​​ 驱动程序中使用 DBRef 时(创建一个新的 DBRef 对象并包含在我要插入到集合中的文档中),我得到了这个错误,我无法做出正面或反面:

这是有问题的代码:

第 39 行是代码片段中倒数第二行。

0 投票
1 回答
117 浏览

mongodb - 如何在 MongoDB (Ruby) 中更新 1 行数据

如果我有以下代码用于使用 mongodb 插入数据,我该如何更新它的值。我对 update_one/update_many 函数中的参数设置感到困惑。

我没有做更新功能。请帮忙!

0 投票
1 回答
556 浏览

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

我想将两种不同投影的效果结合起来,但我还没有看到任何关于如何在网上做到这一点的文档。如果将两个投影串在一起,则只有最终的投影有效果。

0 投票
1 回答
353 浏览

mongodb - MongoDB 为计数查询返回错误的结果

集合的总计数小于过滤计数。诡异的。如果有人可以帮忙???TIA

0 投票
0 回答
169 浏览

mongodb - 来自 mongoid 的零星 NoServerAvailable 错误

在生产环境中,我们会得到源源不断的看似随机的 Mongo::Error::NoServerAvailable 错误。可能一天3个。

有问题的副本集没有经历过任何选举,在这些情节中它的表现并没有什么不寻常的地方。

这是完整的例外:

这是堆栈跟踪的 mongoid 部分:

0 投票
1 回答
531 浏览

ruby - 查找 Mongo::Collection::View 的大小

我正在尝试在 MongoDB 和 ruby​​ 中查找查询结果的大小:

但是,当我运行它时,我收到以下错误:

如何正确确定此查询返回的项目数?我在文档中找不到任何信息。

0 投票
1 回答
245 浏览

mongodb - $all 不适用于数组

我正在尝试获取submissions包含tags数组中列出的所有内容的所有文档。

我当前的代码如下所示:

但是,在运行时,我在第二行收到以下错误:

还应该注意的是,以下内容确实可以正常工作(尽管它没有达到我想要的结果):

如何修复我的原始代码以正确找到所需的文档?