Mongoose如何更新子文档字段?

Posted

技术标签:

【中文标题】Mongoose如何更新子文档字段?【英文标题】:Mongoose how to update subdocument field? 【发布时间】:2019-02-26 17:10:29 【问题描述】:

这是我的架构

var UserSchema = new Schema(

    username: String,
    email: String,
    password: String,
    company: String,
    contact: Number,
    country: String,
    isLoggedIn: Boolean,
    createdOn:  type: Date, default: Date.now ,
    ads: [ type: Schema.Types.ObjectId, ref: 'Ad' ],
    notification: 
        counter: type: Number, default: 0,
        notidata: [ itemdate:  type: Date, default: Date.now , data: type: String]
    

);


var User = module.exports = mongoose.model('User', UserSchema);

我正在尝试通过以下方式将数据推送到 notification.notidata.data 中,但似乎无法正常工作。

User.findByIdAndUpdate(newuser.id, 
  '$set': 
    'notification.$.counter': '1',
    'notification.$.notidata.data': 'two updated'
  
, function(err, post) 

  if (err) 
    console.log(err)
   else 
    console.log(post);
  
);

似乎我不知道如何访问称为数据的子记录字段。

【问题讨论】:

【参考方案1】:

试试$set

  '$set': 
    'notification.counter': '1',
    'notification.notidata.0.data': 'two updated'
  

【讨论】:

您是否尝试过更新的答案?只是位置运算符需要在notidata 之后移动,因为那个是实际的数组

以上是关于Mongoose如何更新子文档字段?的主要内容,如果未能解决你的问题,请参考以下文章

更新子文档、NodeJS 和 Mongoose 的更有效方式

Mongoose:如何将附加字段添加到子文档数组中

Mongoose:如何将附加字段添加到子文档数组中

如何将子文档中的字段更改为 Mongoose 中的父字段

MongoDB:如何使用 Mongoose 添加或更新子文档?

如何在不使用 _id 字段但使用多个属性的情况下在 mongoose 中查找子文档