1

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

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

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

4

1 回答 1

-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 来使用保存字段名称的变量。

于 2012-05-18T14:21:48.620 回答