更新字符串的子数组

时间:2013-07-21 12:10:03

标签: javascript node.js mongodb mongoose

我正在尝试更新文档子阵列中的项目。子数组的类型是字符串数组:

Dictionary.findOne({ name: req.query.name }, function(err1, data){
        if(err1){
            logger.error(err1);
            res.send({ err: 'Db error' });
        } else {
            var index = data.values.indexOf(req.query.value);
            if(index == -1)
                res.send({ err: 'Value not found' });
            else {
                data.values[index] = req.query.newValue;
                data.save(function(err2){
                    if(err2){
                        logger.error(err);
                        res.send({ err: 'Db error' });
                    } else
                        res.send({ data: data, info: 'Dictionary updated successfully' });
                });
            }
        }
    });

返回data已正确更新,但记录未在数据库中更新。请帮忙

2 个答案:

答案 0 :(得分:1)

您需要在保存之前标记更改

data.markModified 'values'
data.save (...)

http://mongoosejs.com/docs/api.html#types_embedded_EmbeddedDocument-markModified

答案 1 :(得分:1)

从mongodb shell

你可以写

db.test.update({values:"English"},{$set:{'values.1':"updated value"}})