从 MongoDB 中删除空字段

Jon*_*han 4 mongodb nosql

通常,您可以使用以下命令从集合中删除字段。但是,下面的代码不适用于空 ( "") 字段。如何删除 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)

Joh*_*yHK 5

看起来 MongoDB 只能部分支持空字符串键。

这不如多重更新有效,但它确实可以删除 shell 中的这些字段:

db.collection.find().forEach(function(doc) {
    delete doc[''];
    db.collection.save(doc);
});
Run Code Online (Sandbox Code Playgroud)


J.C*_*ras 5

要使用updateupdateMany方法执行此操作,您必须指定要更新的参数,例如name

db.collection.updateMany({name: ""}, { $unset : { name : 1 }})
Run Code Online (Sandbox Code Playgroud)