문제

~ 안에 온라인 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

물론 실제 문제는 오래되고 형편없는 문서이므로 업데이트하기 위해 풀 요청을 제출했습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top