Création d’une collection limitée par mongodb à l’aide de c # api

En utilisant le pilote C # MongoDB, nous créons actuellement notre collection comme suit:

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

J’aimerais utiliser mycoll comme une collection limitée. Je n’ai pas vu d’exemples ni de documentation spécifique sur la création d’une collection limitée à l’aide du pilote C #. J’ai trouvé des tonnes d’exemples JS, et même un exemple Java (ici: Créer une collection mongodb capped en Java ).

Quelqu’un a-t-il déjà dû faire cela ou savoir si c’est possible en C #?

Lors de la création d’une collection, vous devez spécifier que la collection doit être limitée à l’aide de CollectionOptions :

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

Vous devez créer la collection explicitement (en appelant la méthode CreateCollection ) pour pouvoir fournir vos options. Lors de l’appel de GetCollection avec une collection non existante, il est créé implicitement avec les options par défaut.

Voici un autre exemple. N’oubliez pas de définir les propriétés MaxSize et 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); 

À partir de la version 2.0 du pilote, il existe une nouvelle API async . L’ancienne API ne devrait plus être utilisée, car elle constitue une façade bloquante par rapport à la nouvelle API et est obsolète.

La méthode actuellement recommandée pour créer une collection plafonnée consiste à appeler et à attendre IMongoDatabase.CreateCollectionAsync avec une instance de CreateCollectionOptions qui spécifie Capped = true et MaxSize = ou MaxDocuments = .

 async Task CreateCappedCollectionAsync() { var database = new MongoClient().GetDatabase("HamsterSchool"); await database.CreateCollectionAsync("Hamsters", new CreateCollectionOptions { Capped = true, MaxSize = 1024, MaxDocuments = 10, }); }