我已经看到了我问的问题的多个实例,但似乎没有解决我的问题。
我有一组带有架构的文件:
{
_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
})
执行上述操作时,如果发现品牌数组中存在对象,则会成功更新,但如果不存在,则会出现以下错误:
如果没有包含数组的相应查询字段
,则无法应用位置运算符我没有任何线索,如果它不存在,如何在数组字段中添加新值。