介绍/措施
我正在使用具有 10 GB 记录(近 300 万条记录)的 MongoDB 数据库。
每条记录(文档)都有一个名为DomainClass
(这是我们之前定义的 11 个不同类别中的一个)的字段。
我想要完成的事情
出于统计原因,我必须从这个数据库中提取100 records of each type of DomainClass
,我不能简单地获得前 100 个,因为样本会存在偏差。我需要在数据库中随机分配这 100 条记录。
我试过的:
这基本上是我尝试过的(在 C# 中)。
1 - 计算属于某个特定的记录数DomainClass
。
2 - 在 0 和计数之间随机化 100 个数字
3-查找属于该的所有记录DomainClass
4-将它们作为列表放入内存中
5 - 使用所有先前随机化的整数 (100) 作为该列表的索引(以解决随机化需求)。
缺陷
恐怕,我将无法为单个类的所有记录分配足够的内存 (RAM)。由于我需要将记录放在数据库中的随机位置,因此我必须将它们放入内存中才能真正生成完全随机的样本
注意事项
我在文档中没有随机字段。我最好的选择是Date
文档的字段,如下所示:
"CreationDate" : ISODate("2013-06-25T22:43:15.571Z")
例如,我可以通过查找在特定秒内创建的记录来获得伪随机记录,但我找不到任何方法来做到这一点,因为秒数本身不是一个字段。
提前谢谢,如果我必须提供任何其他信息,请告诉我。