У меня есть следующие записи в коллекции:Как изменить одно поле в структуре, которая является частью массива в MongoDB используя Node.js
{
id : id_value,
streams : [
{ a : a_value, b : b_value, c : c_value },
{ a : a_value, b : b_value, c : c_value }, ...
]
}
Я хочу, чтобы иметь возможность изменить c_value определенной записи в потоках . Я использую двухэтапный процесс выполнения этого, вытаскивая запись из массива , создавая новую запись и добавляя ее обратно в потоки .. Это работает, но не кажется наиболее эффективным способом достижения этого. Есть ли лучший подход, который я могу использовать? Ниже приведен код, который я в настоящее время с помощью:
db.users.update({id:user},
{$pull : {streams : {$and : [{a : a_value}, {b : b_value}]}}},
{w:1}, cb);
new_entry = { a : old_a_value, b : old_b_value, c : new_c_value}
db.users.update({id:user},
{$addToSet : {streams : new_entry}}, {w:1}, cb);
Спасибо, Gary