如何使用Prisma ORM从MongoDB中获取随机文档?
如何使用Prisma ORM从MongoDB中获取随机文档?
嘿,刚好我之前也碰到过一样的需求,其实Prisma ORM对MongoDB的聚合操作支持得很到位,和你用Mongoose的思路几乎一致,直接用$sample阶段就能搞定!
你只需要调用Prisma模型的aggregate方法,传入包含$sample的聚合数组就行,代码示例如下:
const selectedProjects = await prisma.project.aggregate([ { $sample: { size: 15 } } ]);
是不是和Mongoose的写法差不了多少?这里还有几个小细节要注意:
- 确保你的Prisma版本支持MongoDB聚合操作(现在主流版本都没问题)
- 你的Prisma模型
Project要正确映射到MongoDB对应的集合
如果之后你需要先筛选文档再随机抽取,也可以在聚合管道里先加$match阶段,比如:
const selectedProjects = await prisma.project.aggregate([ { $match: { status: 'published' } }, // 先筛选已发布的项目 { $sample: { size: 15 } } // 再随机取15个 ]);
这样就能完美满足你每次请求获取15个随机文档的需求啦~
备注:内容来源于stack exchange,提问作者Meer Uzair
相关产品推荐
相关产品推荐

