从MongoDB中删除空字段

时间:2014-06-05 18:12:25

标签: mongodb nosql

通常,您将使用以下内容从集合中删除字段。但是,下面的代码不适用于空("")字段。你会如何删除MongoDB中的空字段?

db.collection.update({}, {$unset: {"": ""}}, {multi:true})

我在尝试此操作时收到以下错误消息:

WriteResult({
    "nMatched" : 0,
    "nUpserted" : 0,
    "nModified" : 0,
    "writeError" : {
        "code" : 56,
        "errmsg" : "An empty update path is not valid."
    }
})

3 个答案:

答案 0 :(得分:2)

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

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

db.collection.find().forEach(function(doc) {
    delete doc[''];
    db.collection.save(doc);
});

答案 1 :(得分:1)

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

db.collection.updateMany({name: ""}, { $unset : { name : 1 }})

答案 2 :(得分:0)

如果您需要删除该字段为空的行,则可以使用:

TestObject.INSTANCE.getName()