使用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#中?
当创建一个集合,你需要指定收集应使用封顶CollectionOptions
:
CollectionOptionsBuilder options = CollectionOptions.SetCapped(true);
database.CreateCollection("mycoll", options);
你需要明确创建集合(通过调用CreateCollection
法),以能够提供你的选择。 当调用GetCollection
与不存在的集合,它被隐含使用默认选项创建的。
从司机的V2.0开始有一个新的async
-only API。 旧的API不应该再被使用,因为它是在新的API阻塞门面和被弃用。
目前推荐的方法来建立一个封端的收集是通过调用并等待IMongoDatabase.CreateCollectionAsync
与CreateCollectionOptions
指定实例Capped = true
和MaxSize = <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,
});
}
下面是另一个例子; 不要忘记设置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);