如何在更新时从mongodb集合中删除字段?

时间:2012-05-18 11:49:32

标签: javascript node.js mongodb

我知道如何从集合中删除字段:

db.example.update({},{$unset: {field_to_del:1}},false,true)

但我想删除更新文档时长度为零的所有文档字段。

1 个答案:

答案 0 :(得分:-2)

我认为你可以采用以下两种方式之一:

1)在您的应用中了解哪些字段已被删除,并在更新时将其删除,就像您在问题中一样。

2)将其作为批处理作业编写。这可能会满足您的需求:它强制删除集合中任何文档中的任何空字段(即空字符串值)(在本例中为'so'集合)

var updateEmptyField = function(o){ 
   for (var f in o){ 
      if (o[f] === ''){ 
         eval ("db.so.update({},{$unset: {" + f + ":1}},false,true);");
      }
   }
}

db.so.find().forEach(updateEmptyField);

您需要在此处使用eval来使用包含字段名称的变量。