Czy istnieje sposób na aktualizację wartości w obiekcie?Mongoose, zaktualizuj wartości w tablicy obiektów
{
_id: 1,
name: 'John Smith',
items: [{
id: 1,
name: 'item 1',
value: 'one'
},{
id: 2,
name: 'item 2',
value: 'two'
}]
}
Powiedzmy, że chcę zaktualizować nazwy i pozycje wartości dla pozycji, gdzie id = 2;
Próbowałem następujących w/mangusta:
var update = {name: 'updated item2', value: 'two updated'};
Person.update({'items.id': 2}, {'$set': {'items.$': update}}, function(err) { ...
Problem z tego podejścia jest to, że aktualizuje/ustawia cały obiekt, dlatego w tym przypadku tracę pole id.
Czy istnieje lepszy sposób w mangusty, aby ustawić pewne wartości w tablicy, ale pozostawić inne wartości samodzielnie?
Mam również pytani tylko dla człowieka:
Person.find({...}, function(err, person) {
person.items ..... // I might be able to search through all the items here and find item with id 2 then update the values I want and call person.save().
});
Witam, kiedy to zrobię, zasugerowałeś. board.update ({_id: board._id, "users.username": req.user.username}, {$ set: {"users. $. LastViewed": new Date()}}, function (err) { }); Wystąpił błąd: nie może używać części (użytkowników user.username) do przechodzenia przez element ({users: [{username: "nlm", _id: ObjectId ("583c8cc3813daa6c29f69cb0"), status: "zaproszony", rola : "recenzent"}]}). Czy jest coś, co zrobiłem inaczej? – sh977218
Działa to świetnie, dziękuję. Czy istnieje jednak sposób na utworzenie elementu, jeśli nie ma go w tablicy? –