如果条件匹配,则更新数组字段中的值,否则插入MongoDB

时间:2013-09-19 12:39:34

标签: node.js mongodb

我已经看到了我问的问题的多个实例,但似乎没有解决我的问题。

我有一组带有架构的文件:

{
 _id:someId,
 brands:[
 {_id:1,name:Nike,products:[]},
 {_id:2,name:Reebok,products:[]}     
 ]
}

我想要做的是更新数组字段,如果任何数组元素匹配,则在品牌数组中插入一个新对象。

到目前为止,我遇到过这个问题:

  var args = {
      'query': {_id:someId,"brands._id":someBrandId,}
    , 'update': {
      "$set": {
        'brands.$.products':req.tempStore.products
      }
    },
    , 'upsert':true
  };

然后我使用nodejs驱动程序并使用以下内容:

db.companies.findAndModify(args,function(err,document){
 if(err) return next(err);
 //some other logic here

})

执行上述操作时,如果发现品牌数组中存在对象,则会成功更新,但如果不存在,则会出现以下错误:

如果没有包含数组的相应查询字段

,则无法应用位置运算符

我没有任何线索,如果它不存在,如何在数组字段中添加新值。

0 个答案:

没有答案