我偶然发现了一个相当奇怪的问题。我的应用程序中有一个 mongo 集合,其中包含大约 4 800 000 条记录。我正在使用从该集合返回 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 上运行。