我有三个集合,User
,Room
,RoomMessage
。
User
集合存储用户信息,它有一个名为' rooms'这是一个存储该用户所有房间的数组。对于每个房间,它都有一个timestamp
字段,因此我们可以决定来自这个房间的未读消息。
rooms: [{
room: {
type: Schema.Types.ObjectId,
ref: 'Room'
},
timestamp: {
type: Date,
default: Date.now()
}
}]
以下这个存储所有消息的RoomMessage
个集合
var RoomMessageSchema = new Schema({
sender: {
type: Schema.Types.ObjectId,
ref: 'User'
},
room: {
type: Schema.Types.ObjectId,
ref: 'Room'
},
content: {
type: String,
trim: true
},
type: String,
date: {
type: Date,
default: Date.now
}
});
现在让我们说user1
属于10个房间,他的页面中有一个显示所有房间的房间列表,它可以显示每个房间的所有未读消息编号。
我该怎么办?我可以更快地进行此查询吗?