更新了 Mongoose 更新嵌套数组元素 [重复]
Posted
技术标签:
【中文标题】更新了 Mongoose 更新嵌套数组元素 [重复]【英文标题】:Updated Mongoose update nested array element [duplicate] 【发布时间】:2018-07-12 05:33:51 【问题描述】:我有以下架构
UserSchema: Schema = new Schema(
username: String,
password: String,
chat: [
lastSeen: type: Date, default: Date.now ,
room:
type: Schema.Types.ObjectId, ref: 'ChatRoom'
],
);
我想为UserSchema
创建静态方法,以便通过给定room _id
更新chat[i].lastSeen
UserSchema.statics.lastSeen =
function lastSeen(username: string, roomId: number, date: Date)
this.update(
username: username,
chat:
$elemMatch:
'room._id': roomId
,
$set: 'chat.$[???].lastSeen': date
);
我不知道如何通过他的元素room._id
获取聊天元素然后更新它。有什么帮助吗?
编辑
我的情况与建议的重复类似但不一样,因为那里的人知道所有ids
,而我不知道chat._id
。
【问题讨论】:
@JasonCust 我读了这个但做不到。你能给我一个具体案例的代码吗? 【参考方案1】:如果有人需要,我会发布解决方案。
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以上是关于更新了 Mongoose 更新嵌套数组元素 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 javascript 数组方法更新 mongoose 中的嵌套数组