如何从 MongoDB 集合中 select 随机文档而不是以前的文档?
How to select random documents from the MongoDB collection but not the previous ones?
我在 MongoDB 中有一个视频集合,想 select 从该集合中随机生成视频文档,下面的代码工作正常
const videos = await Video.aggregate([{ $sample: { size: Number(num) } }]);
但它还会在下一个查询中包含上一个结果。我想 select 随机视频文件,但不是以前的文件。
我在向用户显示故事时遇到了同样的问题。
所以我只是将第一个查询结果的 5 到 10 个 ID 存储在前端,并为下一个查询添加 $match
过滤器。并再次用新的结果 ID 替换以前的 ID。
let ids = req.body.alreadyShowedVideos;
const videos = await Video.aggregate([{$match: {_id: {$ne: ids}}}, { $sample: { size: Number(num) } }]);
我在 MongoDB 中有一个视频集合,想 select 从该集合中随机生成视频文档,下面的代码工作正常
const videos = await Video.aggregate([{ $sample: { size: Number(num) } }]);
但它还会在下一个查询中包含上一个结果。我想 select 随机视频文件,但不是以前的文件。
我在向用户显示故事时遇到了同样的问题。
所以我只是将第一个查询结果的 5 到 10 个 ID 存储在前端,并为下一个查询添加 $match
过滤器。并再次用新的结果 ID 替换以前的 ID。
let ids = req.body.alreadyShowedVideos;
const videos = await Video.aggregate([{$match: {_id: {$ne: ids}}}, { $sample: { size: Number(num) } }]);