2012-05-06 8 views
0

(travellingPath.endDate> now)を持つすべての行をフィルタリングして設定する(travellingPath.isActive = false)cronジョブが必要です。移動パスにはtoCityプロパティがあります。今度は、travellingPathと別の設定コレクションの量に基づいてtoCityの数量を更新したいと思います。例えば期限切れの日付に基づいてmongodbの文書(行)の長いリストを更新するにはどうすればよいですか?

  • 走行経路は
  • cronジョブが
  • は、走行経路
  • からtoCityを得るキャッチ期限切れに基づいて別のコレクション
  • からconversionRateを取得toCity.quantity,travellingPath.quantityconversionRateランダム私は新しい値にtoCity.quantityを更新し、私もtoCity.owner
  • を変更する場合があります
  • 更新のisActive = falseを

への走行経路私の考えは、それぞれを照会することですendDate>を持っている旅行パスですが、これは100000の結果に終わる可能性があります。私は正しく動作するように250の結果に制限するかもしれません。それから各travellingPathについて、私はtoCityを取得し、計算を行い、toCityとtravellingPathを更新します。

しかし、これはそれほど効率的ではないようです。..

あなたは、より良いアイデアを持っていますか?おかげで(:

答えて

1

はい、それが進むべき道だMongoDBのアップデートが他のフィールドに依存表現をサポートしていないあなたはこれで立ち往生しているので:。。

  1. 文書一つずつか小さな内を検索しますバッチ;データベース(1つのバッチ内ずつ)に更新を送信
  2. ;
  3. は、フィールドの新しい値を計算
  4. は、文書の次の部分を取得し、行われるまで繰り返し
を。
+0

しかし、これは大きな時間遅れで終了する可能性があります。 –

+0

それはどういう意味ですか? –

+0

大きな遅延があるでしょうか? 14:57:30にトラベリングパスが新都市にあると予想されますが、たとえば14:58:40に更新されるだけです。遅れは70secondsで、これはそれほど受け入れられません。私はそれを制御するためにtravellingpathあたりの遅延の秒数はどれくらいのKPIを作らなければならないでしょうか? –

関連する問題