sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo uppdaterar alla poster med ett fält som är null

Om namnfältet inte finns där, försök:

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

$set kommer att lägga till ett nytt fält med det angivna värdet, förutsatt att det nya fältet inte bryter mot en typbegränsning.

Om det finns där och null, eller inte har ett värde inställt:

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

Du kan kombinera båda frågorna med $or som

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

För MongoDB 3.2 och senare, använd >updateMany() som uppdaterar flera dokument inom samlingen baserat på filtret:

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


  1. MongoDB map()

  2. Var ska jag lägga till --rest-alternativet för MongoDB?

  3. Posta formulärdata till array av befintliga MongoDB-dokument med Express och Mongoose

  4. MongoDB Compass problem med WSL2