使用NodeJS,MongoDB和Monk更新数组项

我有这样的数据集:

{ name : 'Doc Name', photos: [ { name: 'photo1', url: 'http://.....' }, { name: 'photo2', url: 'http://......' } ], etc ... 

使用Monk https://github.com/LearnBoost/monk如何更新photo2? 我可以使用一个索引,因为我正在遍历字段。

我目前的尝试下面给我一个错误,我不能使用JSONselect器的variables(如在索引中)。

 collection.update({_id: data._id}, {photos[i].data: filename}, function(err, updatedata) { }); 

可以使用位置$操作符来更新数组中位置的项目

 collection.update( { _id: data.id, "photos.name": "photo2" }, { $set: { "photos.$.data": "yourdata" } } ) 

所以我find了解决问题的办法,但可能会有更好的select,我将不予答复。 但对于有同样问题的任何人,这是我所做的:

我在Node.js中提取了MongoDB文档作为对象,操纵文档,然后用一个更新语句replace整个数组。 例如这里是一些伪代码:

 collection.find({id: 1}, function(err, doc){ for(i=0; i< doc.array.length; i++) { //do what you gotta do doc.array[i].property = 'new value'; } collection.update({id: 1}, {$set : {"doc.array": doc.array}}, function(err,doc){ console.log(err); } })