Mongomapper:“_id”字段与“id”冲突吗?

时间:2011-01-27 05:17:11

标签: ruby-on-rails-3 mongodb mongomapper

我有一个包含_id和id字段的集合。当我在mongo客户端搜索id字段时,一切都很好。当我搜索mongomapper模型,如:Product.find_by_id(6)或Product.where(:id => 6)时,它返回空的Plucky对象,我可以看到它查找_id字段而不是id。

据我所知,mongomapper总是使用_id,无论你是否特别想通过id找到一些东西。

是否有任何解决方法或我做错了?

2 个答案:

答案 0 :(得分:1)

我相信MongoMapper同等对待id_idid只是_id的友好代表。

在您的特定情况下,您是否还需要拥有id字段?我建议更改它,特别是如果有另一个更适合的描述性名称。如果您实际上使用id字段作为唯一标识符(听起来可能是这样),那么最好的方法可能是将其存储在_id字段中。您已经知道,这在所有MongoDB文档中都是必需的,可以由您(您的应用程序)指定,也可以稍后由您的驱动程序在应用程序代码范围之外添加。

希望有所帮助。

答案 1 :(得分:0)

如果您的密钥为“id”,则可能是由此问题(https://github.com/jnunemaker/mongomapper/issues/195)引起的。除非您明确清除密钥,否则Mongo会记住每个实例的每个密钥。