问题标签 [moped]

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 回答
143 浏览

mongodb - moped 的(Ruby mongodb 驱动程序)remove_all 操作是后台操作吗?

它立即返回,我不完全确定预期的行为是什么。是否在后台删除?

http://mongoid.org/en/moped/

0 投票
1 回答
710 浏览

ruby-on-rails - 连接突然出现问题

我有一个使用 MongoDb 的 Rails 4.0 应用程序。我使用 Mongoid 作为 ORM。直到今天下午,一切正常。

突然,我收到了随机的超时错误。

首先来自 MOPED 的消息:

然后一个

看源码,好像是连接池代码的某个地方有问题,但我对它还不够熟悉,不敢说。

有人对这个问题有任何经验吗?

0 投票
1 回答
1043 浏览

ruby-on-rails - Mongoid / Moped 日期类型插入失败

该问题涉及 mongoid / moped DATE 类型插入。我的代码如下

引发错误

为什么 Date 类型无法通过 moped 插入 mongoDB?我很确定 mongoDB 确实支持 Date 类型。

感谢您的帮助。

0 投票
1 回答
119 浏览

ruby-on-rails - 为什么相同的助力车查询有时需要更长的时间?

当请求 ruby​​ on rails 网页时,有时数据库查询需要 2-4 倍的时间。我已经为 Moped 启用了调试日志记录,并看到了这样的行:

编辑查询和标志,这是时间上的差异:

我想知道为什么 Moped 有时使用 IP 127.0.0.1 而有时使用 IP 54.213.xxx.xx?为什么查询 54.213.xxx.xx 需要 2-4 倍的时间?为了生成这些日志条目,我只是刷新了一个网页。

理想情况下,我希望所有查询花费 ~40ms 而不是偶尔花费 ~160ms。

mongoid.yml如果相关,这是我的:

副本集中有两个 mongo。localhost:17203(或 54.213.xxx.xx)上的那个是次要成员。xxx.no-ip-.biz 解析为 174.21.xxx.xxx 所以我知道我的主要成员没有被用于读取(如我所料)。

0 投票
1 回答
3121 浏览

ruby-on-rails - Moped::Errors::ConnectionFailure: 无法连接到任何辅助或主节点

我一直在尝试配置 MongoDB (Mongoid) 以在我的 Rails 应用程序中工作,但我很无助,因为我已经尝试了几乎所有我可以在网上找到的东西,但每次我的代码中有数据库行时,我都会收到此错误消息。我的应用程序的 repo 在这里,完整的消息是这样的:

更新:根据@BrandonBlack 的建议,在 mongo shell 上运行 rs.status(),得到了这个:

{ "ok" : 0, "errmsg" : "not running with --replSet" }

0 投票
1 回答
2849 浏览

ruby-on-rails - 使用 Sidekiq 处理作业时出现 Mongoid/Moped 错误

在运行 Sidekiq 时,我看到大量作业失败,这些作业都与我的 Mongo 数据库的连接问题有关。我正在用大量负载对机器进行压力测试,因此我排队了超过 18,000 个作业,每个作业在失败时重试 5 秒。一些工作(我猜是那些能够成功检索连接线程的工作人员)工作得很好。然后我有很多其他人有这样的错误:

还有超时错误,如下所示:

请注意,我正在运行带有从https://github.com/mongoid/mongoid的主分支签出的 Mongoid 代码的 Rails 4 。根据我的阅读,以前版本的 Mongoid 需要在完成 Sidekiq 作业处理时显式关闭连接。Mongoid 4 应该自动执行此操作。我无法确认它是否正在这样做。当作业排队太快连接不可用或超时时,问题似乎是双重的。一些工人成功地打开了连接。有些作业必须等到重试才能解析。

我不完全确定这里最好的解决方案是什么。如果我慢慢地排队工作,一切都会很好。不幸的是,这不是应用程序在现实世界中的运作方式。

我如何确保我的 sidekiq 工作获得完成工作所需的 Moped/Mongoid 连接,或者等到有一个可以处理?由于这个问题,看到了大量的异常/错误。下面是常见的重复错误的堆栈跟踪:

** 更新 **

如果我将 sidekiq 工作人员的数量减少到 10 个左右,那么问题就不会发生了——仅仅是因为只有 10 个线程在运行的情况下打开与 MongoDB 的连接的工作人员较少。必须有一种方法可以在 sidekiq 中为 Mongoid/Moped 使用连接池。由于 Rails 负责建立和断开连接,我不知道如何实现这一点。

** 更新 2 **

当我把它指向我们的生产服务器时,它变得更糟了 10 倍。几乎每个线程都是一个Timeout::Error. 有些人通过了,但根本没有多少。这太可怕了。当 MongoDB 在本地时,至少可以通过将 sidekiq 限制为 10 个工作人员来“解决”这个问题。但这不是一个现实的用例,我需要能够连接到另一台机器上的数据库。

0 投票
1 回答
6726 浏览

mongodb - 带有 Rails 4 的 Mongoid - 无法连接到主节点...已解决_地址 = nil

我在本地安装了 MongoDB,并在尝试在 Rails 4 / Ruby 1.9.3 / Windows 7 上使用 Mongoid/Moped 时遇到此错误:

可能是由resolved_address=nil引起的- 其他论坛表示这是由于 hosts 文件中的拼写错误 - 知道这个文件在 Windows 上的位置吗?

应用程序只包含一个简单的模型“文章”

异常被捕获在Articles.all.each.do |article|...

在应用程序之外运行 mongod 和 mongo shell 工作正常 - 所以我假设它与配置有关......我的 Rails 服务器日志吐出以下内容:

据我所知,我没有对副本集做任何事情。

Rails.env 是development,我的配置文件(mongoid.yml)是:

Mongoid 可能还没有正式为 Rails 4 做好准备——但是有没有人幸运地跨越了这个障碍?

0 投票
1 回答
146 浏览

mongodb - Mongoid/Moped 无效的月份日期得到保存

我想要验证包含无效日期的日期时间。我正在使用带有 Rails 4 的 Mongoid 4alpha2,在我的模型上我有一个

field :date_of_birth, type: DateTime

当我从控制器为具有“1988/02/30”的 date_of_birth 进行常规“创建”时,模型会以“1988/03/1”的 date_of_birth 保存,而不是像常规 DateTime 那样出现 DateInvalid 错误。 new(1988,2,30) 将在 rails 控制台中。我不确定 moped 或 mongoid 是否绕过了 DateTime 上的 Rails 验证,还有其他人遇到过这种情况吗?

这是rails日志

Started POST "/drivers" for 127.0.0.1 at 2014-01-16 10:42:40 -0500 Processing by DriversController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"LiKx1ZToNVtNL9FAEgyLNNWW7mABy2BPKPwVVcTtXKk=", "driver"=>{"field_worker_name"=>"Field Worker", "hack_number"=>"38924", "first_name"=>"test", "middle_initial"=>"", "last_name"=>"testing", "date_of_birth"=>"1988/02/30", "gender"=>"", "nationality"=>"", "language"=>"", "street"=>"something", "apartment_number"=>"", "city"=>"something", "state"=>"NY", "zip_code"=>"02398", "cell_phone"=>"", "other_phone"=>"", "email"=>"", "dmv_number"=>"", "state_of_residence"=>"", "has_health_insurance"=>"false", "health_plan"=>"", "date_of_recertification"=>""}, "commit"=>"Add Driver"}

MOPED: 127.0.0.1:27017 COMMAND database=admin command={:ismaster=>1} runtime: 0.5280ms

MOPED: 127.0.0.1:27017 QUERY database=healthfund_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('52d59524544b38160c000000')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.4150ms

MOPED: 127.0.0.1:27017 QUERY database=healthfund_development collection=drivers selector={"hack_number"=>38924} flags=[] limit=-1 skip=0 batch_size=nil fields={:_id=>1} runtime: 1.1000ms

MOPED: 127.0.0.1:27017 INSERT database=healthfund_development collection=drivers documents=[{"field_worker_name"=>"Field Worker", "hack_number"=>38924, "first_name"=>"test", "middle_initial"=>"", "last_name"=>"testing", "date_of_birth"=>1988-03-01 00:00:00 UTC, "gender"=>"", "street"=>"something", "apartment_number"=>"", "city"=>"something", "state"=>"NY", "zip_code"=>"02398", "cell_phone"=>"", "other_phone"=>"", "email"=>"", "nationality"=>"", "language"=>"", "dmv_number"=>"", "state_of_residence"=>"", "has_health_insurance"=>false, "health_plan"=>"", "date_of_recertification"=>nil, "_id"=>38924, "updated_at"=>2014-01-16 15:42:40 UTC, "created_at"=>2014-01-16 15:42:40 UTC}] flags=[] COMMAND database=healthfund_development command={:getlasterror=>1, :w=>1} runtime: 3.4590ms Redirected to http://localhost:3000/drivers/38924 Completed 302 Found in 17ms

0 投票
1 回答
413 浏览

mongodb - 助力车:运行裸 mongo 命令

我在运行 stat 命令时没有收到这样的命令错误

db.stat()在 mongo 控制台中

但是从轻便摩托车上运行它会出错

session.command(stat: 1)

failed with error "no such cmd: stat"

0 投票
2 回答
140 浏览

ruby - 助力车:如何将用户添加到 mongo 数据库

有没有办法从 Moped 将用户添加到数据库。我没有看到任何与 mongo 控制台等效的命令