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.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,
});
}
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)
创建集合时,需要使用以下命令指定集合的上限CollectionOptions:
CollectionOptionsBuilder options = CollectionOptions.SetCapped(true);
database.CreateCollection("mycoll", options);
Run Code Online (Sandbox Code Playgroud)
您需要显式创建集合(通过调用CreateCollection方法)才能提供选项.GetCollection使用不存在的集合进行调用时,将使用默认选项隐式创建它.