手动设置 MongoDB $sample 的种子

问题描述 投票:0回答:3

我正在使用 $sample 查询进行 mongo 聚合。通过以下方式:

db.col.aggregate([
    {$match: {topic: topic}},
    {$sample: {'size': 10}}
    {$project: {_id: 1}}
])

我的问题是,有没有办法设置采样的“种子”,以便每次运行此命令时都能得到相同的结果?

例如,在Python中我这样做:

import random
list_of_items = [...]

# set the seed to 0 
random.seed(0)

# get sample 
samples = random.sample(list_of_items, 10)

通过手动定义种子,我确保每次执行此操作的结果都是相同的。

mongodb aggregation-framework
3个回答
0
投票

目前不可能,但您可以通过 https://feedback.mongodb.com/请求此功能。


0
投票

我们用于解决类似问题的解决方法之一是在

$out
之后使用
$sample
创建“快照”集合。然后,我们对“快照”集合进行处理,以执行具有可重现行为的实验。

我们获得的另一个优势是我们可以对“快照”集合执行索引,以根据需要加快实验速度。


0
投票

在 mongodb 团队实现此功能之前,您可以采取解决方法。

您可以分配一个随机id [0; 1]到您的文档并按此 ID 对它们进行排序+限制。

© www.soinside.com 2019 - 2024. All rights reserved.