繁体   English   中英

用猫鼬更新单个子文档属性

[英]Update single sub-document attribute with 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

我尝试过使用两种方法与猫鼬

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'}})

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM