如何使用条件参数在mongodb中查询多个文档

时间:2018-09-17 13:30:56

标签: javascript mongodb mongoose

我有带有groupIdcreatedTS字段的消息文档。 对于查询,我有groupIdlastVisit的对象数组。 我想在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}})

1 个答案:

答案 0 :(得分:1)

如果我理解正确的问题,那么您需要获取匹配每个stack trace且同时大于适当groupId的记录。如果将其翻译为MongoDB查询,将是这样的:

lastVisit

其中{ "$or": [ { "$and": [ { "groupId": _groupId[i] }, { "createdTS": { "$gt": _lastVisit[i] } } ] }, ... ] } _groupId[i]是组列表和lastVisit时间戳的数组元素。