我知道如何从集合中删除字段:
db.example.update({},{$unset: {field_to_del:1}},false,true)
但我想删除更新文档时长度为零的所有文档字段。
答案 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来使用包含字段名称的变量。