首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NodeJS、MongoDB和Monk更新数组项

使用NodeJS、MongoDB和Monk更新数组项
EN

Stack Overflow用户
提问于 2014-02-03 09:16:27
回答 2查看 18.7K关注 0票数 5

我有一个这样的数据集:

代码语言:javascript
复制
{ 
  name : 'Doc Name',
  photos: [
      {
        name: 'photo1',
        url: 'http://.....'
      },
      {
        name: 'photo2',
        url: 'http://......'
      }
   ],
   etc ...

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

我在下面的尝试中出现了一个错误,并且我不能为JSON选择器使用变量(就像在索引中一样)。

代码语言:javascript
复制
collection.update({_id: data._id}, {photos[i].data: filename}, function(err, updatedata) {

            });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-03 10:06:16

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

代码语言:javascript
复制
collection.update( 
    { _id: data.id, "photos.name": "photo2" }, 
    { $set: { "photos.$.data": "yourdata" } }
)
票数 8
EN

Stack Overflow用户

发布于 2014-02-03 10:11:55

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

我将MongoDB文档提取为Node.js中的对象,操作文档,然后在一条update语句中替换整个数组。例如,下面是一些伪代码:

代码语言:javascript
复制
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);
    }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21518416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档