0

레일/몽에 OBJECTID 추가) 내가 문서를 만들려면 다음 코드가 :수동으로 MongoDB를 (나는 레일 4.0 MongoDB를 (Mongoid 함께 일하고 있어요

lines.each do |l| 
    Insert.create(:position => 0, :content => l, :schema_id => Moped::BSON::ObjectId.from_string("52419d2f80a9b88bb9000002")) 
    end 

이 잘 작동하고 나는 다음과 같은 출력을 얻을 내 몽고 - 데이터베이스에서이 같은 실제 schema_id 전에 :

{ 
"_id": { 
    "$oid": "5241ff1280a9b8f16e000057" 
}, 
"position": "0", 
"content": "blabla", 
"schema_id": "52419d2f80a9b88bb9000002" 

}

유일한 문제는 내가 "$ OID를"갖고 싶어한다

,536 당신이 나를 도울 수 있다면

이 좋은 것 91,363,210
... 
    "schema_id": { 
    "$oid": "52419d2f80a9b88bb9000002" 
} 

나는 정말 내가 수동으로 콜론이 "$ OID를"삽입 할 수있는 방법의 혼동있어 ... ...

들으 미리 !!

답변

0

색인 생성 작업을 어렵게 만들거나 Mongodb로 만들 수 없도록하는 스키마 ID 또는 _id 모두에서 $oid이 없어야합니다. 어쨌든 DB에 삽입 할 때 json에게 문서를 파싱 할 수 있기 때문에 아마 $ oid를 가질 수 있습니다. 만약 내가 당신이라면 db 계층에서이 문제를 해결하기위한 마이그레이션을 작성하고 지속하기 전에 JSON 버전.

+0

글쎄, _id의 $ oid가 자동으로 생성 된 것 같습니다. 이걸 어떻게 바꿀 수 있니? – fromspring2rails

0

나의 의심은 아서의 것과 같고 나는 분명히하려고 노력할 것이다. Ruby 코드를 다시 검사하고 질문에 넣지 않은 Ruby 코드에서 오브젝트 ID를 암묵적으로 문자열로 바꾸지 않도록하십시오.

해독하려고 할 때 귀하의 질문이 혼란스럽고 디버깅 할 때 혼란 스러울 수 있습니다. 이것은 Ruby에서 작업하면서 Ruby 나 mongo 쉘이 아닌 JSON 문서를 제공하기 때문에 문제의 코드와 별도의 컨텍스트에서 디버깅하려고하는 것입니다.

레일스의 표준 필기 시험을 따르기를 강력히 제안합니다. Ruby를 사용하여 문서를 삽입하고 문제의 문서를 덤프하여 문제를 재현하는 테스트를 작성하십시오.