BSON::ObjectId 대 Mongo::ObjectID
문제
~ 안에 온라인 API 그들이 언급하고 있는 것은 Mongo::ObjectID
.
나는 가지고있다 require 'mongo'
하지만 여전히 루비는 그것을 찾지 못합니다.예를 들어, ID로 개체를 찾아야 하는데 다음을 수행하고 있습니다.
mongo_db['post'].find({_id: Mongo::ObjectID(params[:id])}).next
Mongo::ObjectID를 찾을 수 없고 결과는 다음과 같습니다. NoMethodError - undefined method ``ObjectID' for Mongo:Module:
그래서 얼마 후에 나는 시작했다. require 'bson'
그리고 하고있다
mongo_db['post'].find({_id: BSON::ObjectId(params[:id])}).next
그리고 효과가 있었어요!
그렇다면 BSON::ObjectId와 Mongo::ObjectID의 차이점은 무엇이며 후자를 작동시키려면 어떻게 해야 합니까(그리고 실제로 그렇게 해야 합니까)?
추신:나는 가지고있다
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
물론 실제 문제는 오래되고 형편없는 문서이므로 업데이트하기 위해 풀 요청을 제출했습니다.
제휴하지 않습니다 StackOverflow