失败,错误10068:“运算符无效:$ oid”

时间:2013-02-14 06:03:50

标签: ruby-on-rails mongodb mongoid sidekiq

刚刚更新到最新版本的mongoid(3.1.0)和sidekiq(2.7.2)
现在我收到了错误:failed with error 10068: "invalid operator: $oid"
从查看代码我看到一个像这样的选择:@selector={"_id"=>{"$oid"=>"[some id]"}}
什么可以在这里出错?

2 个答案:

答案 0 :(得分:7)

将此添加到我的gemfile修复了问题:

gem 'multi_json', '1.5.1'

我猜最新版本(1.6.0)

有问题

编辑:gem已更新为解决此问题的新版本(1.6.1)。更多: https://github.com/intridea/multi_json/issues/89

答案 1 :(得分:6)

这实际上是因为BSON :: ObjectId不是JSON的一部分...所以当Sidekiq尝试将args序列化为工作者时,它会发生声响。看看此评论:https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803

修复只是在执行类似的工作时将ID转换为字符串:

EmailSubscribe.perform_async(user.id.to_s)