MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Elemento de array de atualização do MongoDB (documento com uma chave) se existir, senão push


Você pode usar $addToSet para adicionar um item ao array e $set para atualizar um item existente nesta matriz.

O seguinte adicionará um novo item à matriz se o userID não foi encontrado na matriz:
db.doc.update({
    visits: {
        "$not": {
            "$elemMatch": {
                "userID": 4
            }
        }
    }
}, {
    $addToSet: {
        visits: {
            "userID": 4,
            "time": 1482607614
        }
    }
}, { multi: true });

O seguinte atualizará o item da matriz do subdocumento se corresponder ao userId :
db.doc.update({ "visits.userID": 2 }, {
    $set: {
        "visits.$.time": 1482607614
    }
}, { multi: true });