我有这样的记录
[
{
"key": 1,
"val":"1"
},
{
"key": 2,
"val":"1"
},
{
"key": 3,
"val":"1"
},
{
"key": 4,,
"val":"2"
}
]
我想激活这样的东西,如果我给予一个过滤器{val:"1"}
,我希望能够得到50%(四舍五入)的随机结果。例如,一个可能的预期结果可能是
{
"key": 1,
"val":"1"
},
{
"key": 2,
"val":"1"
}
我本可以在获得所有结果后在代码中处理此问题,但这是聚合管道中的步骤之一,此阶段的输出将用作管道下一阶段的输入。
1条答案
按热度按时间j9per5c41#
您可以先按
$rand
创建一个随机排序关键字。使用$setWindowFields
计算$rank
和total。最后使用$divide
计算相对排名,并按小于您喜欢的阈值/抽样百分比的值查找。Mongo Playground