使用Mongoose

时间:2018-03-23 10:27:29

标签: node.js mongodb mongoose

我有一个带有一系列子文档的Mongo Collection,如下所示:

var aliasSchema = new Schema({
  name: String,
  alias_type: String,
  isCommonName: { type: Boolean, default: false }
});    

var parentSchema = new Schema(
      {
        name: String,
        description: { type: String, required: false },
        observation: { type: String, required: false },
        indexed: { type: Boolean, default: true },
        aliases: [aliasSchema],
    }

我想更新一个别名对象alias_type

我尝试过两种使用Mongoose的方法

1

Parent.findOneAndUpdate({'aliases.name': aliasName },{$set: {"aliases.$.alias_type": req.body.aliasForm.alias_type}}, {new: true}, function(err, aliasDoc) {
        if (err) {
            res.status(400)
            res.send(err);
        }
        console.log(aliasDoc);
        res.status(200);
        res.send(aliasDoc);
    });

2

Parent.update({'aliases.name': aliasName },{$set: {"aliases.$.alias_type": req.body.aliasForm.alias_type}}, function(err, aliasDoc) {
        if (err) {
            res.status(400)
            res.send(err);
        }
        console.log(aliasDoc);
        res.status(200);
        res.send(aliasDoc);
    });

但是,我仍然没有成功更新alias_type。 当我在mongo控制台中运行选项(1)时,它起作用了:

db.getCollection('parent').findOneAndUpdate({'aliases.name': 'SomeValue' },{$set:{'aliases.$.alias_type': 'AnotherValue'}})

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

我在调用其中一个参数时犯了一个错误。我在问题中发布的update()技术有效:)