2011-07-09 69 views
0
{ 
    _id: 'abc123', 
    reports: [ 
      { uid: 33, name: 'john' }, 
      { uid: 215, name: 'jess' }, 
      { uid: 29, name: 'hal'} 
      ] 
} 

比方說,我有上面的文檔。在Mongoose(node.js MongoDB)中,如何執行此更新?

models.Stuff.findOne({_id:'abc123'},function(err,result){ 
    //Got the above record. 
}); 

我得到文檔後,如何將所有「uids」更改爲0?我想通過所有的文件的報告,並改變所有的UID爲0

回答

1
for(i in result.reports){ 
    result.reports[i].uid = 0; 
} 
result.save(); 
+0

可能還有一種方法可以通過使用'$ set'的'update()'來實現,儘管在嵌入式文檔中我並不是100%確定如何工作。 – kcbanner

+0

因爲'reports'是一個「對象數組」,'$ set'表示法是不可靠的(您必須更新特定的數組索引)。當然,在上面的例子中,你必須認識到你可能正在錘擊某人的變化。 (也許他們在更改'uid'時做了'$ push')。根據您的使用情況,這裏確實存在數據爭用的空間。 –

0

更好的使用pinch.min.js這是這種要求非常方便。

相關問題