【问题标题】:How to select random documents from the MongoDB collection but not the previous ones?如何从 MongoDB 集合中选择随机文档而不是以前的文档?
【发布时间】:2021-07-29 04:19:06
【问题描述】:
我在 MongoDB 中有一个视频集合,想从该集合中选择随机视频文档,下面的代码运行良好
const videos = await Video.aggregate([{ $sample: { size: Number(num) } }]);
但它还包括下一个查询中的前一个结果。我想选择随机的视频文档,而不是以前的。
【问题讨论】:
标签:
mongodb
mongoose
select
random
non-relational-database
【解决方案1】:
我在向用户显示故事时遇到了同样的问题。
所以我只是将第一个查询结果的 5 到 10 个 id 存储在前端,并在下一个查询中添加 $match 过滤器。并再次用新的结果 id 替换以前的 id。
let ids = req.body.alreadyShowedVideos;
const videos = await Video.aggregate([{$match: {_id: {$ne: ids}}}, { $sample: { size: Number(num) } }]);