Трябва да използвате позиционния оператор $
Например:
update({
_id: 7,
"comments._id": ObjectId("4da4e7d1590295d4eb81c0c7")
},{
$set: {"comments.$.type": abc}
}, false, true
);
Не съм го тествал, но се надявам, че ще ви бъде полезен.
Ако искате да промените структурата на документа, трябва да използвате
db.collection.update(критерии,objNew, upsert, multi )
Аргументи:
criteria - query which selects the record to update; objNew - updated object or $ operators (e.g., $inc) which manipulate the object upsert - if this should be an "upsert"; that is, if the record does not exist, nsert it multi - if all documents matching criteria should be updated
и вмъкнете нов objNew с нова структура. проверете това за повече подробности