4

私は簡単なプロジェクトに取り組んでいます。SpringDataとMongoDBを使用しています。

通常のコレクションを作成するのにすべてが完璧ですが、今は情報を登録する必要があります。つまり、ログ機能です。

だから私はmongoのドキュメントでこれを読んだ:

上限付きコレクションは、ロギングドキュメントをデータベースに保存するための高性能な手段を提供します。インデックス付けされていない上限付きコレクションにオブジェクトを挿入すると、ファイルシステムへのログ記録の速度に近くなります。さらに、組み込みのFIFOメカニズムを使用すると、ロギングに過剰なディスク領域を使用するリスクがなくなります。

素晴らしいと思いました!これは私が必要としているものですが、私には疑問があります。SpringDataを使用してこの種のコレクションを作成することは可能ですか?SpringDataのドキュメントに何も見つかりませんでした。

誰かがこれについて何か知っていますか?

ありがとう

4

3 に答える 3

6

上限を設定するコレクションを指定できる引数createCollection(…)を取るメソッドがあります。CollectionOptions

// The 'true' is setting it to capped
CollectionOptions options = new CollectionOptions(null, 50, true);
mongoOperations.createCollection("myCollection", options);

@Documentこれらのオプションをアノテーションに公開して、マッピングコンテキストを構築するときに自動的に処理することをお勧めしますが、通常、自動マジックの動作をあまり行わずに、これらのコレクションのセットアップとインデックス作成操作を手動で処理したいというフィードバックを受け取りました。それでもサポートされていることを確認したい場合は、JIRAを開いてください。

于 2011-10-26T16:13:12.800 に答える
2

CollectionOptions options = new CollectionOptions(null, 5000, true)現在は非推奨です。代わりに、次のコードを使用する必要があります。

CollectionOptions options = CollectionOptions.empty()
                    .capped().size(5242880)
                    .maxDocuments(5000)

サイズを指定することを忘れないでください。詳細については、TailableCursorsを参照してください。

于 2019-02-27T09:37:47.383 に答える
0

spring-dataによって作成されたコレクションがある場合(例reservation:)、次のように簡単に上限に変換できます。

db.runCommand({ convertToCapped: 'reservation', size: 9128 })

mongodbのマニュアルを読む:https ://docs.mongodb.com/manual/reference/command/convertToCapped/

ps:@Tailableアノテーションは非常にセクシーです。リアクティブプログラミングの原則を使用して、そのコレクションの更新を追跡し、その変更に対応するのに役立ちます。

于 2018-01-07T04:51:04.440 に答える