javascript - 如何使用条件参数在mongodb中查询多个文档
问题描述
我有带有groupId
和createdTS
字段的消息文档。并且对于查询,我有带有groupId
and的对象数组lastVisit
。我想在groupId
之后查询所有消息lastVisit
我尝试使用groupIds$in
但它没有过滤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}})
解决方案
如果我理解的问题是正确的,那么您需要获取与每个匹配groupId
且同时大于适当的记录lastVisit
。如果将其转换为 MongoDB 查询,它将是这样的:
{
"$or": [
{
"$and": [
{ "groupId": _groupId[i] },
{ "createdTS": { "$gt": _lastVisit[i] } }
]
},
...
]
}
其中_groupId[i]
和_lastVisit[i]
是组列表和 lastVisit 时间戳的数组元素。
推荐阅读
- python - python web3 eth getBalance没有响应
- go - Gorm 使用 Scan() 左连接
- r - 将 corr.test 输出转换为 R 中的 data.frame
- css - 连接到可拖动 div 的 SVG 路径被扭曲
- mysql - 当 MySQL 使用 utf8mb4 字符集从派生表中选择某些内容时,为什么 MySQL 对每个字符使用 4 个字节?
- r - 递归函数返回 NA
- reactjs - Next.js SSR 与 SSG
- javascript - 将 Google Calendar/fullcalendar.io 集成到 Squarespace 的页面中
- django - 在 Django 中过滤左外连接,可以通过 values() 访问相关模型,而不是其字段
- c# - F# 返回函数