如何删除从csv导入的ObjectId的引用

时间:2015-03-23 09:29:27

标签: mongodb

我已将csv文件导入集合

我的文档保存为

"_id" : "ObjectID(53874d952f92e2af1a5f0afb)"

我无法查询此

任何人都可以帮我删除ObjectId

的引文

2 个答案:

答案 0 :(得分:0)

让我们假设您的集合名称是myCollection。 这样做:

db.myCollection.forEach(function(doc) { 
   var oldId = doc._id;
   var newIdStr =  doc._id.replace(/ObjectID\((\w+)\)/g,"\$1");
   var newObjId = ObjectId(newIdStr);
   doc._id = newObjId;
   db.myCollection.save(doc);
   db.myCollection.remove({_id:oldId});
});

答案 1 :(得分:-1)

CSV不能完全保留字段的类型,并且可以显示字符串和整数(而不是Object_ids)。如果我是你,我会用最合适的语言编写一个解析器,然后在objectIds中转换你的_id。

另一种方法(如果您的_ids不重要)您可以将csv标头中的_id更改为任何其他名称,并且在导入mongo期间将创建新的ID,然后您将删除创建的字段。

下次您可以使用mongodump and mongorestore保留类型。