MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongo aggiorna tutti i record con un campo nullo

Se il campo del nome non è presente, prova:

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

$set aggiungerà un nuovo campo con il valore specificato, a condizione che il nuovo campo non violi un vincolo di tipo.

Se è presente e nullo o non ha un valore impostato:

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

Puoi combinare entrambe le query utilizzando $or come

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

Per MongoDB 3.2 e versioni successive, utilizzare updateMany() che aggiorna più documenti all'interno della raccolta in base al filtro:

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