Array#shuffle
を使用することはできません。すべてのドキュメントを取得しないためです(ドキュメントは最大20個しか取得できません)。 MongoMapperを使用してMongoDBデータベースからランダムなドキュメントを取得するにはどうすればよいですか(つまり、MySQLではORDER BY RAND()
を使用します)。MongoMapperを使用してドキュメントをランダムな順序で取得するにはどうすればよいですか?
1
A
答えて
3
ORDER BY RAND()
に似た技術はありません。そして、MySQLでさえそれを避けることが勧められます(大きなテーブルで)。
しかし、いくつかの一般的なトリックを適用することができます。
たとえば、IDの最小値と最大値が分かっている場合は、範囲内のランダム値を選択して次のオブジェクトを取得します。
db.collection.find({_id: {$gte: random_id}}).limit(1);
20回繰り返す。
また、各文書に「ランダム」フィールドを追加することもできます(そして、しばらく毎回それを再計算することもできます)。この方法では、各クエリで実際にランダムな結果を得ることはありませんが、かなり安いでしょう。
db.collection.find().sort({pseudo_random_field: 1}).limit(20)
// you can also skip some records here, but don't skip a lot.
0
スキップとランダムクラスを使用してください。
class Book {
include MongoMapper::Document
key :title
key :author
}
rand = Random.rand(0..(Book.count-1))
Book.skip(rand).first
関連する問題
- 1. AngularJSの使用コレクションの順序をランダム化するにはどうすればよいですか?
- 2. カスタムフィルタを使用してオブジェクトリストのランダムな値を取得するにはどうすればよいですか?
- 3. グラフAPI:正しい順序でアルバムを取得するにはどうすればよいですか?
- 4. Pythonでmordモジュールを使用して順序回帰を行うにはどうすればよいですか?
- 5. カルマでテストの順序をランダム化または変更するにはどうすればよいですか?
- 6. RabbitMQでのメッセージの順序をランダム化するにはどうすればよいですか?
- 7. リストアイテムの順序をランダムに表示するにはどうすればよいですか?
- 8. MongoMapperを使用してオブジェクトのデフォルトコンストラクタを拡張するにはどうすればよいですか?
- 9. Rails finderメソッドの結果の順序をランダム化するにはどうすればよいですか?
- 10. WebDriverWaitでランダムを使用するにはどうすればよいですか?
- 11. 重複しないランダムな文字列値を取得するにはどうすればよいですか?
- 12. サンドキャッスルヘルプファイルビルダを使用して、ドキュメントソースなしでドキュメントを生成するにはどうすればよいですか?
- 13. ember-dataを使用してRESTデータを取得/取得するにはどうすればよいですか?
- 14. WPF(つまり、ビジュアルツリーの順序)でデフォルトのタブ順序を取得するにはどうすればよいですか?
- 15. Microsoft AzureからJSONドキュメントを取得してカフカにプッシュするにはどうすればよいですか?
- 16. 3つのテーブルを使用して一意のレコードと外部結合の順序を取得するにはどうすればよいですか?
- 17. Python xml.saxを使用して要素属性リストの順序を取得するにはどうすればよいですか?
- 18. ループを使用して画像をランダムな順序で表示
- 19. 1から4までの数字をランダムな順序で取得する
- 20. Pythonでランダムな順序で同じデータに対して同じハッシュIDを作成するにはどうすればよいですか?
- 21. Magentoでは、管理領域に表示されている順序でカテゴリのリストを取得するにはどうすればよいですか?
- 22. シンプルなJavascriptを使用してファイルのアップロードサイズを取得するにはどうすればよいですか?
- 23. Javaを使用して動的なWebコンテンツを取得するにはどうすればよいですか?
- 24. Waypointを使用してアクティブな要素を取得するにはどうすればよいですか?
- 25. リスト要素を順序なしリストから削除するにはどうすればよいですか?
- 26. 配列を順序なしリストに表示するにはどうすればよいですか?
- 27. アップロードしたファイルを正しい順序で処理するにはどうすればよいですか?
- 28. Sphinxのドキュメントでは、「glob」フラグオプションによって提供されるtoctreeの順序を元に戻すにはどうすればよいですか?
- 29. 複雑な順序でコードをモデルに挿入するにはどうすればよいですか?
- 30. どのように逆の順序でカウントを取得するには?