8

現在、C#MongoDBドライバーを使用して、次のようにコレクションを作成しています。

MongoServer mongoServer = MongoServer.Create("some conn str");
MongoDatabase db = mongoServer.GetDatabase("mydb");
MongoCollection logs = db.GetCollection("mycoll");

mycoll上限のあるコレクションとして使用したいと思います。C#ドライバーを使用して上限付きコレクションを作成する方法の例やドキュメントの詳細は見たことがありません。たくさんのJSの例、さらにはJavaの例も見つけました(ここでは、javaでmongodbキャップ付きコレクションを作成しています)。

誰かが以前にこれをしなければならなかった、またはそれがC#で可能かどうか知っていますか?

4

3 に答える 3

16

ドライバーのv2.0以降、新しいasync専用APIがあります。古いAPIは、新しいAPIをブロックするファサードであり、非推奨であるため、使用しないでください。

上限付きコレクションを作成するために現在推奨されている方法は、andまたは(または両方)を指定IMongoDatabase.CreateCollectionAsyncするCreateCollectionOptionsインスタンスを呼び出して待機することです。Capped = trueMaxSize = <cap size in bytes>MaxDocuments = <cap in doc count>

async Task CreateCappedCollectionAsync()
{
    var database = new MongoClient().GetDatabase("HamsterSchool");
    await database.CreateCollectionAsync("Hamsters", new CreateCollectionOptions
    {
        Capped = true,
        MaxSize = 1024,
        MaxDocuments = 10,
    });
}
于 2015-06-21T21:06:07.287 に答える
15

別の例を次に示します。MaxSizeプロパティとMaxDocumentsプロパティを設定することを忘れないでください。

var server = MongoServer.Create("mongodb://localhost/");
var db = server.GetDatabase("PlayGround");

var options = CollectionOptions
   .SetCapped(true)
   .SetMaxSize(5000)
   .SetMaxDocuments(100);

if (!db.CollectionExists("Log"))
    db.CreateCollection("Log", options);
于 2012-07-09T06:29:22.333 に答える
9

コレクションを作成するときは、次を使用してコレクションに上限を設定するように指定する必要がありますCollectionOptions

CollectionOptionsBuilder options = CollectionOptions.SetCapped(true);
database.CreateCollection("mycoll", options); 

CreateCollectionオプションを提供できるようにするには、コレクションを明示的に(メソッドを呼び出して)作成する必要があります。存在しないコレクションで呼び出す場合GetCollection、デフォルトのオプションで暗黙的に作成されます。

于 2012-07-03T18:57:31.007 に答える