MongoDB聚合函数:$sort不使用$sample?



我目前无法构建一个首先使用排序然后输出一个样本的mongoDB查询。数据库中的文档如下所示:

{
"_id" : "cynthia",
"crawled" : false,
"priority" : 2.0
}

我正在尝试实现以下目标:给我一个具有最高优先级的随机元素。
我使用以下查询对其进行了测试:

db.getCollection('profiles').aggregate([
{$match: {crawled: false }}, 
{$sort: {priority: -1}}, 
{$sample: {size: 1}}
]) 

不幸的是,这是行不通的。蒙戈似乎完全忽略了$sort。我认为与$sort一起使用与否没有区别。

有没有更多mongoDB经验的人对此有想法?如果您对"优先级"功能的更好实现有想法,请告诉我。

每个想法都受到高度赞赏。

$sample不是你要找的。根据文档:

从其输入中随机选择指定数量的文档。

因此,您将从过滤的文档集中随机获得一个文档。

$limit是您需要的,因为它首先需要前一阶段的n文档。管道应如下所示:

db.profiles.aggregate([
{$match: {crawled: false }}, 
{$sort: {priority: -1}}, 
{$limit: 1}
])

最新更新