Mongodb提供$样本的唯一值
问题描述:
我想在mongodb上使用聚合管道来检索3个随机文档。
$sample
看起来是理想的,除了返回的文件不保证是唯一的。
关于如何生成3个独特文档作出回应的任何想法?我猜这需要进一步使用聚合管道,我不确定的方式。
这当然假设集合中有3个或更多文档。
谢谢。
答
你可以做的是要求更多的数据是什么,比方说100 $sample
“d单据,_id
集团这些文件删除重复项(唯一性),并限制输出到所需的文件数:
db.test.aggregate([{
$sample: { size: 100 }
}, {
$group: {
_id: "$_id",
document: { $push: "$$ROOT" }
}
}, {
$limit: 3
}])
答
看起来这个问题实际上是建立在一个不正确的假设上的,这是基于我测试的方式。
$sample
确实返回了唯一的条目,根据定义,我只是发布相同的请求,并没有意识到数据库已经被这个相同的请求过度填充。经过检查,objectID实际上是独一无二的,从而解决了这个问题(当然,这并不存在于第一位)。
感谢您的回复。 这是假设我的集合的大小为100或更大,实际上我实际上是从0增加我的集合,并希望检索每个新条目的3个文档。 我知道这意味着处理前3个条目作为特例... 有没有进一步的想法?谢谢 – Adam