看起来你可以通过塑造解决方案1来实现此目的(假设你的_id键是自动递增值),然后对记录进行计数,并将其用作c++中随机整数的上限,然后抓取该行。
同样,如果你没有自动递增的_id键,只需在结果中创建一个即可。额外添加一个带有INT的字段不会太大程度地增加文档大小。
如果你没有自动递增字段,Mongo讲解如何快速添加一个:
ensureIndex
操作。我是 Mongo 的新手,所以无法确定。 - Violet Giraffe我曾经遇到过类似的问题。在我的情况下,我的文档上有一个日期属性。我知道数据集中最早的日期,因此在我的应用程序代码中,我会生成一个在EARLIEST_DATE_IN_SET和NOW范围内的随机日期,然后使用日期属性上的GTE查询查询mongodb,并将其限制为1个结果。
随机日期有很小的可能性大于数据集中的最高日期,因此我在应用程序代码中考虑了这一点。
在日期属性上建立索引后,这是一个超级快速的查询。