【问题标题】: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) } }]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多