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 });