0

我使用Rails 4.0和MongoDB(Mongoid工作手動),我有以下代碼來創建文檔:添加對象ID MongoDB中(軌道/旺

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

這工作得很好,我得到下面的輸出在我的蒙戈 - 數據庫:

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

}

唯一的問題是,我希望有一個 「$ OID」:這樣的實際schema_id前:

... 
    "schema_id": { 
    "$oid": "52419d2f80a9b88bb9000002" 
} 

,我真的得到了迷惑的我怎麼可以插入「$ OID」,然後手動冒號....

將是巨大的,如果你能幫助我......

THX提前!!

回答

0

根本不應該有$oid,在您的schema_id或_id中,都不會使索引操作變得困難,或者不可能進入Mongodb。你可能有$ oid,因爲你可以將文檔解析爲一個json,以某種方式插入到數據庫中,無論如何,如果我是你,我會寫一個遷移來修復db層中的這個問題,並修復代碼以不使用JSON版本在持續之前。

+0

那麼,_id中的$ oid似乎是自動生成的?我該如何改變這一點? – fromspring2rails

0

我懷疑像亞瑟的,我會盡力澄清。你應該重新檢查你的Ruby代碼,並確保你不會在你的問題中隱藏地將你的對象標識串入一些Ruby代碼中。

當我試圖破譯它時,你的問題讓我感到困惑,當你嘗試調試時可能會讓你感到困惑。這是因爲你在Ruby中工作,但是給了我們JSON中的文檔,這些文檔不是來自Ruby,也不是來自mongo shell,這表明你正試圖從與代碼不同的上下文中進行調試。

我輕輕地建議你按照標準的Rails編寫測試的練習。請編寫一個測試,通過插入文檔並使用Ruby轉儲有問題的文檔來重現您的問題。