2011-01-27 89 views
3

我有一個包含_id和id字段的集合。當我在mongo客戶端通過id字段搜索時,一切都很好。當我通過像mongomapper模型搜索:Product.find_by_id(6)或Product.where(:ID => 6)將其返回空勇敢的對象,我可以看到,它看起來爲_id字段代替ID。Mongomapper:「_id」字段與「id」字段衝突嗎?

正如我所理解的mongomapper只是總是使用_id,無論你是否特別想通過id找到某些東西。

是否有任何解決方法或我做錯了?

回答

1

我相信MongoMapper同等對待id_idid只是_id的一個友好的表示。

你的具體情況,有沒有你需要有id場以及任何理由?我建議改變它,特別是如果有另一個更適合的描述性名稱。如果您實際上使用id字段作爲唯一標識符(這聽起來像您可能),最好的方法可能是將其存儲在_id字段中。正如你已經知道,這是必需的所有MongoDB的文件,可以通過你(應用程序)來指定,或者通過驅動程序的應用程序代碼的範圍之外後來添加的。

希望有所幫助。

+0

嗨,你指的是哪個版本?我們在0.9.2上,出於某種原因,它似乎將「id」與「_id」不同。有沒有需要啓用的設置?例如,「Game.id」返回nil,而「Game._id」(下一行)返回一個mongo ID,如預期的那樣。 – Crashalot 2011-10-27 02:38:28

0

它可以通過,如果你曾經有一個實例與關鍵這個問題(https://github.com/jnunemaker/mongomapper/issues/195)引起的「ID」。除非您明確清除密鑰,否則Mongo會記住每個密鑰每個實例。