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

MongoDB Update elemento dell'array (documento con una chiave) se esiste, altrimenti push

Puoi usare $addToSet per aggiungere un elemento all'array e $set per aggiornare un elemento esistente in questo array.

Quanto segue aggiungerà un nuovo elemento all'array se il userID non si trova nell'array :

db.doc.update({
    visits: {
        "$not": {
            "$elemMatch": {
                "userID": 4
            }
        }
    }
}, {
    $addToSet: {
        visits: {
            "userID": 4,
            "time": 1482607614
        }
    }
}, { multi: true });

Quanto segue aggiornerà l'elemento dell'array di documenti secondari se corrisponde a userId :

db.doc.update({ "visits.userID": 2 }, {
    $set: {
        "visits.$.time": 1482607614
    }
}, { multi: true });