MongoDB:查询单个随机文档的最有效方法是什么?

我需要随机选择一个文档(或者是随机定位的“窗口”中的少量连续文档)。 我找到了两个解决方案: 12 。 第一个是不可接受的,因为我预计收集量很大,希望尽量减少文档大小。 第二个似乎无效(我不确定skip操作的复杂性)。 在这里可以找到一个查询指定索引的文档,但我不知道该怎么做(我使用的是C ++驱动程序)。

是否有其他解决方案? 哪种效率最高?


我曾经有过类似的问题。 就我而言,我在文档上有一个日期属性。 我知道数据集中最早的日期,所以在我的应用程序代码中,我将在EARLIEST_DATE_IN_SET和NOW范围内生成一个随机日期,然后使用date属性上的GTE查询来查询mongodb,并将其限制为1个结果。

随机日期有可能比数据集中的最高日期更长,所以我在应用程序代码中考虑了这一点。

通过date属性的索引,这是一个超快速查询。


看起来你可以在那里模拟解决方案1(假设你的_id键是一个auto-inc值),那么就对你的记录进行一次计数,然后用它作为c ++中随机int的上限,然后抓住那行。

同样,如果您没有autoinc _id键,只需使用结果创建一个。使用INT具有附加字段不应该增加您的文档大小。

如果你没有auto-inc字段Mongo谈到如何在这里快速添加一个:

汽车公司领域。

链接地址: http://www.djcxy.com/p/56083.html

上一篇: MongoDB: what is the most efficient way to query a single random document?

下一篇: Sorting and adding inputs like Google