Javascript 更新的Mongoose更新嵌套数组元素

Javascript 更新的Mongoose更新嵌套数组元素,javascript,node.js,mongodb,typescript,mongoose,Javascript,Node.js,Mongodb,Typescript,Mongoose,我有以下模式 UserSchema: Schema = new Schema({ username: String, password: String, chat: [{ lastSeen: { type: Date, default: Date.now }, room: { type: Schema.Types.ObjectId, ref: 'ChatRoom' } }], }); 我想对UserSchema使用静态方法,以便更新聊天室

我有以下模式

UserSchema: Schema = new Schema({
  username: String,
  password: String,
  chat: [{
    lastSeen: { type: Date, default: Date.now },
    room: {
        type: Schema.Types.ObjectId, ref: 'ChatRoom'
    }
  }],
});
我想对UserSchema使用静态方法,以便更新聊天室[I].lastSeen(按给定的房间id)

我无法找到如何通过他的元素室获取聊天元素。\u id,然后更新它。有什么帮助吗

编辑


我的案例与建议的副本类似,但不同,因为那里的人知道所有id,而我不知道聊天。我正在发布解决方案,以防有人需要它

UserSchema.statics.lastSeen = 
function lastSeen(username: string, roomId: number, date: Date) {
    this.update({
      username: username,
      'chat.room': roomId
    }, { $set: { 'chat.$.lastSeen': date }})
    .exec();
};

@杰森:我一定读过这篇文章,但做不到。您能为我的具体案例提供一个代码吗?也适用于模型,例如Model.update,否。在这种情况下需要exec
UserSchema.statics.lastSeen = 
function lastSeen(username: string, roomId: number, date: Date) {
    this.update({
      username: username,
      'chat.room': roomId
    }, { $set: { 'chat.$.lastSeen': date }})
    .exec();
};