Mongo使用“null”字段更新所有记录

时间:2015-03-25 14:20:46

标签: mongodb

如何更新所有单个字段设置为“null”或根本没有值的Mongo文档?

我有什么,但我不确定它是否正确:

db.collection.update({name: {$eq: null}}, {$set: {name: 'test'}})

2 个答案:

答案 0 :(得分:9)

如果名称字段不存在,请尝试:

db.collection.update({"name": {"$exists": false}}, {"$set": {"name": "test"}})

$set将添加具有指定值的新字段,前提是新字段不违反类型约束。

如果它在那里并且为null,或者没有设置值:

db.collection.update({"name": null}, {"$set": {"name": "test"}})

您可以使用 $or 作为

组合这两个查询
db.collection.update(
    {
        "$or": [
            { "name": { "$exists": false } }, 
            { "name": null }
        ]
    }, 
    { "$set": { "name": "test" } }
)

对于MongoDB 3.2及更高版本,使用updateMany()根据过滤器更新集合中的多个文档:

db.collection.updateMany(
    {
        "$or": [
            { "name": { "$exists": false } }, 
            { "name": null }
        ]
    }, 
    { "$set": { "name": "test" } }
)

答案 1 :(得分:2)

试试这个

 db.collection.findAndModify({
    query: {'$or': [{'name': {$eq: null}}, {'name': {"$exists":false}},{ field: { "$type" : 10} }]},
    update: {$set: {name: 'test'}},
});

由于