มีวิธีอัพเดตค่าในออบเจ็กต์หรือไม่?
{
_id: 1,
name: 'John Smith',
items: [{
id: 1,
name: 'item 1',
value: 'one'
},{
id: 2,
name: 'item 2',
value: 'two'
}]
}
สมมติว่าฉันต้องการอัปเดตชื่อและรายการค่าสำหรับรายการที่ id = 2;
ฉันได้ลองใช้ w / พังพอนต่อไปนี้:
var update = {name: 'updated item2', value: 'two updated'};
Person.update({'items.id': 2}, {'$set': {'items.$': update}}, function(err) { ...
ปัญหาเกี่ยวกับวิธีนี้คืออัพเดต / ตั้งค่าอ็อบเจ็กต์ทั้งหมดดังนั้นในกรณีนี้ฉันจะสูญเสียฟิลด์ id
มีวิธีที่ดีกว่าในพังพอนในการตั้งค่าบางค่าในอาร์เรย์ แต่ปล่อยให้ค่าอื่นอยู่คนเดียวหรือไม่?
ฉันยังสอบถามเฉพาะบุคคล:
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().
});