2015-02-24 81 views
1

我想增加数据库中找到的文档的子文档中元素的数量。如何用JavaScript在mongodb中增加文档的子文档中的值

我找到文档工作:

Cart.findOne({_id: '2JKD6eynaYmTGnbiZ',"items.productId": 'inkGTN7T89fqwEqTB' }); 

返回此:

{ _id: '2JKD6eynaYmTGnbiZ', 

    items: 

    [ { _id: 'LYKPShnDDfYHS8zmx', 

     productId: 'inkGTN7T89fqwEqTB', 

     quantity: 1 } ], 

    sessionId: 'jhizTjhiErYRNKhJW’ } 

但我似乎无法增加子文件与本次更新的项目中的一个元素的qty

Cart.update({ 
    _id: '2JKD6eynaYmTGnbiZ’, "items.productId": ‘inkGTN7T89fqwEqTB' 
}, { 
    $set: { 
     updatedAt: new Date() 
    }, 
    $inc: { 
     "items.quantity": 10 
    } 
}); 

我不知道我是否引用它错误,我试图使用items.$.productId来引用该元素,但不会在查找中返回文档。

+0

我认为你需要调用为$的新字段设置和更新的领域,并添加{upsert:true},我不确定$ inc是做什么的。请参阅http://docs.mongodb.org/manual/tutorial/modify-documents/ – faljbour 2015-02-24 02:10:24

回答

1

您需要使用表示匹配items数组元素在你的$inc该指数$ positional operator

Cart.update(
{ 
    _id: '2JKD6eynaYmTGnbiZ', "items.productId": 'inkGTN7T89fqwEqTB' 
}, { 
    $set: { 
     updatedAt: new Date() 
    }, 
    $inc: { 
     "items.$.quantity": 10 
    } 
});