Mongodb 如何删除Mongo中不推荐使用的字段?

Mongodb 如何删除Mongo中不推荐使用的字段?,mongodb,Mongodb,我已从文档定义中删除了一些字段。我想在集合的所有文档中删除此字段。我该怎么做呢?就这样做吧 db.people.find().forEach(function(x) { delete x.badField; db.people.save(x); }) 噢,有人用update()给出的$unset答案也非常棒。试试: db.collection.update( { '<field>': { '$exists': true } }, // Query {

我已从文档定义中删除了一些字段。我想在集合的所有文档中删除此字段。我该怎么做呢?

就这样做吧

db.people.find().forEach(function(x) {
   delete x.badField;
   db.people.save(x);
})
噢,有人用
update()
给出的
$unset
答案也非常棒。

试试:

db.collection.update(
    { '<field>': { '$exists': true } },  // Query
    { '$unset': { '<field>': true  } },  // Update
    false,                               // Upsert
    true                                 // Multi-update
)

见Thx,Jamund。你的方法也行。不要这样做。对于大型集合,此方法将非常慢,因为它单独处理每个项,并对每个项运行多个查询。这是一种非常有用的模式,但仅当您需要执行可能需要对每个文档进行复杂处理的非琐碎更新时。这对于$unset版本将字段设置为null,并且您希望完全删除字段时也很有用。这非常有用,因为设置
x.badField=null在保存过程中不会像我的库那样擦除字段-它实际上会将为$unset语句中的字段值指定的值(即此处的1)保存为null,但不会影响操作。
db.collection.update(
    { '<field>': { '$exists': true } },  // Query
    { '$unset': { '<field>': true  } },  // Update
    { 'multi': true }                    // Options
)