我知道如何从集合中删除字段:
db.example.update({},{$unset: {field_to_del:1}},false,true)
但是我想在更新文档时删除长度为零的所有文档字段。
我知道如何从集合中删除字段:
db.example.update({},{$unset: {field_to_del:1}},false,true)
但是我想在更新文档时删除长度为零的所有文档字段。
我认为您可以采用以下两种方式之一:
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 来使用保存字段名称的变量。