我有带有groupId
和createdTS
字段的消息文档。
对于查询,我有groupId
和lastVisit
的对象数组。
我想在groupId
lastVisit
的所有消息
我尝试将$in
与groupIds一起使用,但是它没有用createdTS
过滤lastVisit
成员架构
const GroupMemberSchema = new mongoose.Schema({
userId: { type: String, required: true },
groupId: { type: String, required: true },
addTS: { type: Date, default: Date.now },
lastVisit: { type: Date, default: Date.now }
});
消息架构
const GroupMessageSchema = new mongoose.Schema({
id: { type: String, required: true },
groupId: { type: String, required: true },
content: { type: String, required: true },
createdTS: { type: Date, default: Date.now },
});
查询
GroupMessage.find({groupId: {$in: groupIds}})
答案 0 :(得分:1)
如果我理解正确的问题,那么您需要获取匹配每个stack trace
且同时大于适当groupId
的记录。如果将其翻译为MongoDB查询,将是这样的:
lastVisit
其中{
"$or": [
{
"$and": [
{ "groupId": _groupId[i] },
{ "createdTS": { "$gt": _lastVisit[i] } }
]
},
...
]
}
和_groupId[i]
是组列表和lastVisit时间戳的数组元素。