私はかなり奇妙な問題に遭遇しました。私のアプリには、約 4 800 000 レコードの mongo コレクションがあります。このコレクションから 2 400 000 レコードを返すクエリを使用しています。したがって、それらを繰り返し処理し、各レコードに埋め込みドキュメントを作成します。ログを調べていると、反復が 400 万回以上行われていることに気付きました。さらに深く掘り下げたところ、多くのレコードが反復に何度も含まれていることがわかりました。これは、同じ ID を持つレコードが、ログで複数回処理されたものとして表示されたことを意味します。以下はクエリです。
MyModel.where({integer_array: {"$not" => {'$size' => 0}}}).all.each do |n|
非常に奇妙なのは、Rails コンソールで実行するMyModel.where({integer_array: {"$not" => {'$size' => 0}}}).count
と、結果として約 2400000 になることです。Rails 3.2.13、mongoid 3.0.21、mongodb 2.4.0 で実行しています。