1

mongodb のコレクションからすべてのレコードを取得し、いくつかの計算を実行するコードがあります。

「coll_id.find().each do |eachitem|.......」が一度に 300 レコードしか返さないので、私のプログラムは時間がかかりすぎます。

ループ内にカウンターを配置してチェックすると、300 レコードが出力され、次の 300 レコードのセットのカウンター値を出力する前に約 3 ~ 4 秒間スリープします。

coll_id.find().each do |eachcollectionitem|
    puts "counter value for record " + counter.to_s
    counter=counter +1 
            ---- My computations here ----- 
    end

これは ruby​​-mongodb api の制限ですか、それともコードがすべてのレコードに一度にアクセスできるように構成を行う必要があります。

4

1 に答える 1

0

ドキュメントのサイズはどれくらいですか? デシリアライゼーションに時間がかかっている可能性があります。C 拡張 (bson_ext) を使用していますか?

接続時にロガーを渡してみてください。それは何が起こっているのかを整理するのに役立つかもしれません. または、MongoDB ログに貼り付けることはできますか? 一時停止中に何が起こっているのですか?

于 2011-01-26T17:36:15.000 に答える