使用c#api创建mongodb上限集合

Ben*_*Ben 9 .net c# mongodb mongodb-.net-driver

使用C#MongoDB驱动程序,我们目前创建我们的集合,如下所示:

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

我想mycoll用作上限集合.我还没有看到任何关于如何使用C#驱动程序创建上限集合的示例或文档细节.我发现了大量的JS示例,甚至是一个Java示例(这里:在java中创建一个mongodb上限集合).

有没有人必须这样做,或者知道C#中是否可能?

i3a*_*non 16

从驱动程序的v2.0开始,有一个新的async-inly API.不应再使用旧的API,因为它是新API的阻止外观,不推荐使用.

目前推荐的创建封顶集合的方法是调用和等待指定和/ 或(或两者)IMongoDatabase.CreateCollectionAsyncCreateCollectionOptions实例.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,
    });
}
Run Code Online (Sandbox Code Playgroud)


Jef*_*aes 14

这是另一个例子; 不要忘记设置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);
Run Code Online (Sandbox Code Playgroud)


Nik*_*sev 9

创建集合时,需要使用以下命令指定集合的​​上限CollectionOptions:

CollectionOptionsBuilder options = CollectionOptions.SetCapped(true);
database.CreateCollection("mycoll", options); 
Run Code Online (Sandbox Code Playgroud)

您需要显式创建集合(通过调用CreateCollection方法)才能提供选项.GetCollection使用不存在的集合进行调用时,将使用默认选项隐式创建它.

  • 现在已弃用,请参阅@ i3arnon的答案 (2认同)