通常,您可以使用以下命令从集合中删除字段。但是,下面的代码不适用于空 ( "") 字段。如何删除 MongoDB 中的空字段?
db.collection.update({}, {$unset: {"": ""}}, {multi:true})
Run Code Online (Sandbox Code Playgroud)
当我尝试此操作时,我收到以下错误消息:
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 56,
"errmsg" : "An empty update path is not valid."
}
})
Run Code Online (Sandbox Code Playgroud)
看起来 MongoDB 只能部分支持空字符串键。
这不如多重更新有效,但它确实可以删除 shell 中的这些字段:
db.collection.find().forEach(function(doc) {
delete doc[''];
db.collection.save(doc);
});
Run Code Online (Sandbox Code Playgroud)
要使用update或updateMany方法执行此操作,您必须指定要更新的参数,例如name:
db.collection.updateMany({name: ""}, { $unset : { name : 1 }})
Run Code Online (Sandbox Code Playgroud)