2017-02-06 96 views
0

我无法在mongodb版本3.0.12和ruby gem版本中执行upsert查询1.x。我使用的是Ruby 1.9.3版本。我尝试将mongodb升级到版本3.23.4,但仍面临同样的问题。如果任何人有任何想法正在发生或遇到类似问题,请提供一些见解。数据库命令'更新'失败:更新命令的未知选项:upsert

Database command 'update' failed: Unknown option to update command: upsert 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/db.rb:559:in `rescue in command' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/db.rb:555:in `command' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/collection_writer.rb:314:in `block in send_write_command' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/functional/logging.rb:55:in `block in instrument' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/functional/logging.rb:20:in `instrument' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/functional/logging.rb:54:in `instrument' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/collection_writer.rb:313:in `send_write_command' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/collection.rb:1076:in `send_write' 
/Users/ayushgaur/.rvm/gems/ruby-1.9.3-p551/bundler/gems/mongo-ruby-driver-de949571b660/lib/mongo/collection.rb:497:in `update' 
+0

是不是mongo-ruby-driver版本2.4?你为什么在版本1.x? – eiko

+0

请提供您使用过的实际查询。 –

+0

@eiko项目中有很多相关的宝石,所以我不想最终更新所有宝石。 –

回答

0

蒙戈 - 红宝石驱动程序的1.x不完全支持的MongoDB 3,按https://www.mongodb.com/blog/post/announcing-ruby-driver-20-rewrite

有很多理由升级到蒙戈宝石2.0版,并mongoid宝石版本5.0,当它被释放时。首先,这些版本支持MongoDB 3.0 [...] 不会添加新功能,开发工作只包括错误修复和支持最新版服务器所需的最少功能。

我搜索了人们对整个互联网类似的问题,只有我发现人是那些在pagerbot,谁使用1.x的系列宝石与蒙戈3和获取完全相同的错误,你:

https://github.com/stripe-contrib/pagerbot/issues/46

他们通过更新到蒙戈 - 红宝石驱动2.道歉让你与那些依赖搏斗解决错误,但我无法找到一个更简单的答案。