我一直在使用 Mongoose 将大量数据插入到 mongodb 数据库中。我注意到默认情况下,Mongoose 将 _id 字段添加到所有子文档,给我留下了看起来像这样的文档(为简洁起见,我删除了许多字段 - 我还将每个数组缩小为一个条目,它们通常有更多)
{
"start_time" : ISODate("2013-04-05T02:30:28Z"),
"match_id" : 165816931,
"players" : [
{
"account_id" : 4294967295,
"_id" : ObjectId("51daffdaa78cee5c36e29fba"),
"additional_units" : [ ],
"ability_upgrades" : [
{
"ability" : 5155,
"time" : 141,
"level" : 1,
"_id" : ObjectId("51daffdaa78cee5c36e29fca")
},
]
},
],
"_id" : ObjectId("51daffdca78cee5c36e2a02e")
}
我已经找到了如何防止 Mongoose 默认添加这些(http://mongoosejs.com/docs/guide.html,请参阅选项:id),但是我现在有 9500 万条记录,所有子文档上都有这些无关的 _id 字段。我有兴趣找到删除所有这些字段的最佳方法(将 _id 留在顶级文档中)。我最初的想法是在每个对象上使用一堆for...in
循环,但这似乎非常低效。