【问题标题】:Manually Setting the Seed for MongoDB $sample手动设置 MongoDB $sample 的种子
【发布时间】:2016-08-09 23:57:29
【问题描述】:

我正在使用 $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)

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

【问题讨论】:

  • 不,没有。否则它不会是一个“随机样本”。如果您一直想要一个相同事物的列表,则存储选定的 _id 值并为这些值提供 $in 查询。
  • @Codious-JR 你找到解决问题的方法了吗?我还没有找到任何合理的解决方案来解决我的问题。
  • @NeilLunn:有许多用于播种聚合操作的用例,特别是用于可重复性(例如测试目的、机器学习等)
  • @guhur 有没有我可以查找这些用例的术语?我尝试了谷歌搜索(例如 "mongo aggregate "$sample", random seed" ),但我找不到任何东西。
  • @XavierGuihot 我删除了标签

标签: mongodb aggregation-framework


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我们用于类似问题的解决方法之一是在$sample 之后使用$out 来创建“快照”集合。然后,我们处理“快照”集合以执行具有可重现行为的实验。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-04
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多