【问题标题】:MongoDB: Pulling multiple random documents from a collectionMongoDB:从集合中提取多个随机文档
【发布时间】:2012-02-16 16:49:29
【问题描述】:

我需要从 MongoDB 的集合中提取多个随机文档。我不想为我的文档添加新键或使用 map reduce。有什么建议吗?

【问题讨论】:

标签: javascript ruby-on-rails-3 mongodb mongomapper


【解决方案1】:

您可以在从 0 到集合项计数的范围内生成随机跳过,然后加载文档:

db.items.find().skip(randonNumberHere).limit(1);

但是,这种方法因为对于大集合的效率越来越低,因为每次使用 skip mongodb 从第一个迭代到跳过项目。

【讨论】:

    【解决方案2】:

    如果集合不是大得离谱...

    all_ids = MyModel.collection.distinct(:_id)
    @my_models = MyModel.find(all_ids.sample(100)) # or .shuffle.take(100) in 1.8.7
    

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      相关资源
      最近更新 更多