0

(travellingPath.endDate>now) を持つすべての行をフィルタリングし、それらを設定する (travellingPath.isActive=false) cron ジョブが必要です。移動パスには toCity プロパティがあります。次に、travellingPath の数量と別の設定コレクションに基づいて、toCity の数量を更新します。

例えば:

  • 移動経路の有効期限が切れた
  • cronジョブがそれをキャッチします
  • 移動経路から toCity を取得する
  • 別のコレクションから conversionRate を取得する
  • toCity.quantitytravellingPath.quantityconversionRate、およびrandomに基づいて、 toCity.quantityを新しい値に更新し、 toCity.owner も変更する可能性があります
  • 移動経路を isActive=false に更新する

私の考えは、 endDate>now を持つ各移動パスを照会することですが、これは 100000 件の結果になる可能性があるため、あまり良くありません。適切に機能させるために、結果を 250 件に制限する場合があります。次に、travellingPath ごとに toCity を取得し、計算を行い、toCity と travellingPath を更新します。

しかし、これはあまり効率的ではないようです..

もっと良いアイデアはありますか?ありがとう (:

4

1 に答える 1

1

はい、その通りです。MongoDB の更新では、他のフィールドに依存する式はサポートされていません。だからあなたはこれで立ち往生しています:

  1. ドキュメントを 1 つずつ、または小さなバッチで取得します。
  2. フィールドの新しい値を計算します。
  3. データベースに更新を送信します (1 つずつまたはバッチで)。
  4. ドキュメントの次の部分を取得し、完了するまで繰り返します。
于 2012-05-06T12:15:25.313 に答える