我正在学习节点和mongo,目前正在一个简单的服务器上工作,它将从mongodb获取10个随机文档,并在接收到get请求时作为响应发送它们。我的下一个目标是创建一个页面,它将用一些基本的样式在html页面中显示这10条记录。该页面还有一个next按钮,它将从数据库中再获取10条随机记录。问题是如何确保相同的记录在此过程中不会被取两次?
发布于 2019-04-09 05:18:46
要选择10随机文档,可以使用$sample管道阶段。
let randomDocs = db.col.aggregate(
[ { $sample: { size: 10 } } ]
)如果要确保下一次$sample调用不会返回相同的文档,则需要使其具有状态,这意味着您应该过滤掉在上一次调用中返回的文档:
db.col.aggregate(
[
{ $match: { _id: { $nin: randomDocs.map(doc => doc._id) } } },
{ $sample: { size: 10 } }
]
)https://stackoverflow.com/questions/55584789
复制相似问题