ruby - BSON::ObjectId 与 Mongo::ObjectID

标签 ruby mongodb gem bson

online API他们指的是 Mongo::ObjectID

我有 require 'mongo' 但 ruby​​ 仍然找不到它。例如,我需要通过它的 Id 找到一个对象,我正在做:

mongo_db['post'].find({_id: Mongo::ObjectID(params[:id])}).next

它似乎找不到 Mongo::ObjectID 并导致:NoMethodError - Mongo:Module 的未定义方法“ObjectID”:

所以一段时间后我开始要求'bson'并做

mongo_db['post'].find({_id: BSON::ObjectId(params[:id])}).next

成功了!

那么 BSON::ObjectId 和 Mongo::ObjectID 之间有什么区别,我需要做什么才能使后者工作(我真的需要这样做)吗?

PS:我有

bson (1.5.2, 1.4.1)
    Authors: Jim Menard, Mike Dirolf, Kyle Banker
    Homepage: http://www.mongodb.org
    Installed at (1.5.2): /usr/local/lib64/ruby/gems/1.9.1
                 (1.4.1): /usr/local/lib64/ruby/gems/1.9.1

    Ruby implementation of BSON

mongo (1.5.2, 1.4.1)
    Authors: Jim Menard, Mike Dirolf, Kyle Banker
    Homepage: http://www.mongodb.org
    Installed at (1.5.2): /usr/local/lib64/ruby/gems/1.9.1
                 (1.4.1): /usr/local/lib64/ruby/gems/1.9.1

    Ruby driver for the MongoDB

最佳答案

与此处相关的 Ruby 驱动程序有两个更改。第一个是:

https://jira.mongodb.org/browse/RUBY-158

将 ObjectID 移动到“驼峰式”版本的 ObjectId。从 Mongo 命名空间到 BSON 命名空间的切换发生得更早 (0.2),请在此处查看历史文件中的最后一个条目:

https://github.com/mongodb/mongo-ruby-driver/blob/master/docs/HISTORY.md

当然,真正的问题是旧的和粗糙的文档,所以我提交了一个 pull request 来更新它:

https://github.com/mongodb/mongo-ruby-driver/pull/90

关于ruby - BSON::ObjectId 与 Mongo::ObjectID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386533/

相关文章:

ruby-on-rails-3 - RVM、Capistrano 和 bundle 程序路径问题

ruby - 背包算法中的 min{wi, W − w} 函数

ruby-on-rails - Ruby:ElasticSearch + 轮胎错误 Tire::Search::SearchRequestFailed - IndexMissingException?

MongoDB C# 查询从文档中选择特定键

php - "PHP Composer"与 "Ruby Gems and Bundler"相比

ruby - 您是否必须为 JRuby 和 MRI 重复安装 gem?

ruby - Chef Recipe - 仅当用户资源执行了manage_home时如何运行资源

ruby-on-rails - 如何命名依赖于另一个 gem 的 gem ?

node.js - 我无法在 Node 中修改数组

ruby - 使用 ObjectId 时无法使用 Ruby 和 MongoDB 找到文档