Gibt es eine Möglichkeit, Werte in einem Objekt zu aktualisieren?Mongoose, Werte im Array von Objekten aktualisieren
{
_id: 1,
name: 'John Smith',
items: [{
id: 1,
name: 'item 1',
value: 'one'
},{
id: 2,
name: 'item 2',
value: 'two'
}]
}
Sagen wir, ich möchte den Namen und Wert Elemente für Artikel mit ID = 2;
Ich habe folgend w/Mungo versucht:
var update = {name: 'updated item2', value: 'two updated'};
Person.update({'items.id': 2}, {'$set': {'items.$': update}}, function(err) { ...
Problem mit diesem Ansatz ist, dass es aktualisiert/setzt das gesamte Objekt, also in diesem Fall, dass ich das ID-Feld verlieren.
Gibt es einen besseren Weg in Mungo, bestimmte Werte in einem Array zu setzen, aber andere Werte in Ruhe zu lassen?
Ich habe auch nur für die Person abgefragt:
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().
});
Hallo, wenn ich genau das mache hast du vorgeschlagen. board.update ({_id: board._id, "users.username": req.user.username}, {$ set: {"Benutzer. $. LastViewed": neues Datum()}}, function (err) { }); Ich habe einen Fehler: kann den Teil (Benutzer von users.username) nicht verwenden, um das Element zu durchlaufen ({users: [{Benutzername: "nlm", _id: Objekt-ID ('583c8cc3813daa6c29f69cb0'), Status: "Eingeladen", Rolle : "Rezensent"}]}). Gibt es irgendetwas, was ich anders gemacht habe? – sh977218
Das funktioniert super, danke. Gibt es jedoch eine Möglichkeit, ein Element zu erstellen, wenn es nicht im Array ist? –