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

时间:2012-07-03 18:35:50

标签: c# .net mongodb mongodb-.net-driver

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

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

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

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

3 个答案:

答案 0 :(得分:16)

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

目前推荐的创建上限集合的方法是使用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,
    });
}

答案 1 :(得分: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);

答案 2 :(得分:9)

创建集合时,您需要使用CollectionOptions指定集合的​​上限:

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

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