我目前无法构建一个首先使用排序然后输出一个样本的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}
])