5

我有一个这样的数据集:

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

使用 Monk https://github.com/LearnBoost/monk如何更新 photo2?我现在可以在遍历字段时使用索引。

我在下面的当前尝试给了我一个错误,我不能使用 JSON 选择器的变量(如索引中的)。

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

            });
4

2 回答 2

8

可以使用位置$运算符更新数组中某个位置的项目

collection.update( 
    { _id: data.id, "photos.name": "photo2" }, 
    { $set: { "photos.$.data": "yourdata" } }
)
于 2014-02-03T02:06:16.237 回答
0

所以我找到了解决我的问题的方法,但可能有一些更好的选择,我不会回答它。但对于其他有同样问题的人来说,这就是我所做的:

我将 MongoDB 文档提取为 Node.js 中的一个对象,对文档进行操作,然后在单个更新语句中替换整个数组。例如这里是一些伪代码:

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);
    }
})
于 2014-02-03T02:11:55.323 回答