2016-11-28 30 views
1

C#、バージョン2以降の新しいバージョンのMongodbドライバにいくつかのコードを更新しようとしていますが、CollectionExists()メソッドは廃止予定でした。以前のバージョンでは動作していましたが、もはや動作しませんでした。新しいドライバで既にコレクションが存在するかどうかを知るにはどうすればよいですか?コレクションが存在するかどうかを知る方法Mongodb C#バージョン2またはそれ以前

public static IMongoCollection<T> GetCollectionSafe<T>(string collectionName) 
{     
    var db = GetDatabase(); 
    if (!db.CollectionExists(collectionName)) //throws error 
    { 
     db.CreateCollection(collectionName); 
    } 
    return db.GetCollection<T>(collectionName); 
} 

GetDatabase()タイプIMongoDatabaseです。私は、特定の名前を持つコレクションが存在するかどうかを知りたいだけです。

答えて

0

あなたはコード

public async Task<bool> CheckCollection(IMongoDatabase database, string collectionName) 
{ 
    var filter = new BsonDocument("name", collectionName); 
    var collectionCursor = await database.ListCollectionsAsync(new ListCollectionsOptions {Filter = filter}); 
    return await collectionCursor.AnyAsync(); 
} 

P.S.に従うことによって、コレクションの有無を確認することができます方法GetCollectionは安全に使用できます。コレクションの存在を確認する必要はありません。それは運転手自身によって行われました。

0

このコードは私のデータベースに失敗します。

database.ListCollections(new ListCollectionsOptions { 
    Filter = new BsonDocument { { "name", collectionName } } }) 

I次のエラーメッセージが出ます:

UuidLegacyする バイナリサブタイプを必要とする読者のためのGuidRepresentation CSharpLegacyであるが、 UuidStandardではなく

問題のコレクションは、GuidRepresenを使用してSerilogのMongoDbシンクを作成しましたtation = CSharpLegacyです。

このコードは(モンゴドライバーvで2.5.0。)問題なく動作します:

database.GetCollection<BsonDocument>(collectionName) != null 
関連する問題