我有一个名为detailLog
的MongoDB集合,其中包含用户活动的记录。我想检索特定用户的数据。
下面是我简化的当前查询:
const logs = await db.detailLog.aggregateRaw({
pipeline: [
{
$lookup: {
from: "Detail",
localField: "detailId",
foreignField: "id",
as: "detail"
}
},
{
$match: { "detail.userId": userId }
},
.............
...............
.................
]
});
字符串
下面是我对相关模型的Prisma模式的简化版本:
model Detail{
id String @id @default(auto()) @map("_id") @db.ObjectId
userId String @db.ObjectId
.............
...............
.................
detailLogs DetailLog[]
}
model DetailLog {
id String @id @default(auto()) @map("_id") @db.ObjectId
detailId String @db.ObjectId
.............
...............
.................
detail Detail @relation(fields: [detailId], references: [id], onDelete: Cascade)
}
型
我正在使用Nextjs、Prisma和mongoDB,并使用aggregateRaw
函数在一个集合上运行聚合查询。然而,我想根据另一个集合的条件过滤结果,类似于where子句。我如何在聚合查询中实现这一点?
我确定有数据匹配userId
和userId
是正确的。如果我删除$match
阶段,我成功地获得数据。
我很感激任何关于如何解决这个问题的指导。谢谢!
1条答案
按热度按时间bzzcjhmw1#
我通过如下修改代码解决了这个问题。谢谢大家。
字符串