4

私はチケット販売を処理するアプリケーションを構築しており、非常に高い需要があると予想しています。node.js Web サイトを提供する複数の同時クライアント ノードで MongoDB を使用してみます (そして、クライアントの障害を適切に処理します)。

「 mongodb のコレクション内のドキュメント数を制限する」(これはまったく関係ありません) と「特定のコレクション内のレコード数を制限する方法はありますか」を読みました(ただし、新しいドキュメントが制限されたコレクションについて説明しています)。最も古いドキュメントを上書きします)。

コレクション内のドキュメントの数を最大サイズに制限し、その制限を超えるドキュメントを拒否することは可能ですか? 簡単な例では、チケットの販売をデータベースに追加し、すべてのチケットがすでに売り切れている場合は失敗します。

NumberRemaining到達するまでアトミックにデクレメントできるドキュメントを用意することを検討し0ましたが、その数をデクリメントしてからチケットの購入を保存するまでの間にノードがクラッシュした場合、問題が残ります。

4

3 に答える 3

1

これまでの私の唯一の解決策(誰かがこれを改善できることを願っています):

ドキュメントが到着したら、上限なしのコレクションにドキュメントを挿入します。の暗黙的_idな値を保持しますObjectID。これは並べ替えが可能なため、追加された時点でドキュメントを並べ替えます。

_idドキュメントの最大数に制限された順序ですべてのクエリを実行します。

挿入が「成功」したかどうかを判断するには、新しく挿入されたドキュメントがドキュメントの最大数以内であることを確認する追加のクエリを実行します。

于 2013-04-04T14:24:48.757 に答える