Có cách nào để cập nhật giá trị trong một đối tượng không?Mongoose, cập nhật giá trị trong mảng đối tượng
{
_id: 1,
name: 'John Smith',
items: [{
id: 1,
name: 'item 1',
value: 'one'
},{
id: 2,
name: 'item 2',
value: 'two'
}]
}
Cho phép nói rằng tôi muốn cập nhật tên và mục giá trị cho mục có id = 2;
Tôi đã thử những điều sau w/mongoose:
var update = {name: 'updated item2', value: 'two updated'};
Person.update({'items.id': 2}, {'$set': {'items.$': update}}, function(err) { ...
Vấn đề với cách tiếp cận này là nó cập nhật/bộ toàn bộ đối tượng, do đó trong trường hợp này tôi đã làm mất các trường id.
Có cách nào tốt hơn trong mongoose để đặt các giá trị nhất định trong một mảng nhưng chỉ để lại các giá trị khác không?
Tôi cũng đã truy vấn cho chỉ là Person:
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().
});
Xin chào, khi tôi thực hiện chính xác bạn đã đề xuất. board.update ({_id: board._id, "user.username": req.user.username}, {$ set: {"người dùng. $. LastViewed": new Date()}}, function (err) { }); Tôi gặp lỗi: không thể sử dụng phần (người dùng tên người dùng.us) để duyệt qua phần tử ({users: [{username: "nlm", _id: ObjectId ('583c8cc3813daa6c29f69cb0'), trạng thái: "được mời", vai trò : "người đánh giá"}]}). Tôi có làm gì khác không? – sh977218
Điều này hoạt động tuyệt vời, cảm ơn bạn. Tuy nhiên, có cách nào để tạo một mục nếu nó không nằm trong mảng không? –