我使用最新版本的MongoDB和Mongoid 2.2获得了一个Rails 3.0.9项目。
我将一个带有“id”字段的CSV导入名为College的MongoDB集合中,产生如下集合:
{ "_id" : ObjectID("abc123"), "id" : ######, ... }
观察:
问题:
谢谢!
更新
答案:
db.colleges.update( { "name" : { $exists : true } } , { $rename : { "id" : "code" } }, false, true )
我使用“名字”,因为那是我可以检查存在的字段。
答案 0 :(得分:2)
_id是MongoDB中的保留和必需属性 - 我认为mongoid将id映射到_id,因为这是有道理的。可能有一种方法可以通过mongoid访问id属性,但我认为你最好将id列重命名为其他东西以避免将来混淆。
{ $rename : { old_field_name : new_field_name } }
将重命名文档中的字段名称(mongo 1.7.2 +)。
所以
db.college.update({ "_id" : { $exists : true }}, { $rename : { 'id' : 'code' } }, false, true);
应更新该集合中的每条记录,并将id字段重命名为code。
(显然在运行任何重要数据之前对此进行测试)