1

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

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已正确更新,但数据库中的记录未更新。请帮忙

4

2 回答 2

1

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

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

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

于 2013-07-21T12:51:35.067 回答
1

从 mongodb shell 你可以写

db.test.update({values:"English"},{$set:{'values.1':"updated value"}})
于 2013-07-21T13:16:39.107 回答