2017-08-22 5 views
1

私はRenameCollectionOperation()でMongoDBのコレクションの名前を変更しようとしています。私はそれのドキュメントを見つけましたが、私はそれを働かせることはできません。MongoDB C#ドライバリネームコレクション

https://mongodb.github.io/mongo-csharp-driver/2.4/apidocs/html/T_MongoDB_Driver_Core_Operations_RenameCollectionOperation.htm

private readonly MongoClient _mongoClient = new MongoClient("connectionString"); 
public IMongoCOllection<RenameCollection> ToRenameCollection => _MognoClient.GetDatabase().GetCollection<RenameCollection>("RrenameCollection"); 

var checkIfCollectionExists = ToRenameCollection.Find(new BsonDocument()); 

if (checkIfCollectionExists != null) 
{ 
    var test = new MongoDB.Driver.Core.Operations.RenameCollectionOperation(
     new CollectionNamespace("database", "RrenameCollection"), 
     new CollectionNamespace("database", "RenameCollection"), 
     new MessageEncoderSettings() 
    ); 
} 

答えて

1

私はそれを考え出しました。

データベースを返すだけのメソッドを作成する必要があるようです。

private readonly MongoClient _mongoClient = new MongoClient("connectionString"); 
public IMongoDatabase Database => _mongoClient.GetDatabase(); 

private async Task<bool> CollectionExistsAsync(string collectionName) 
{ 
    var filter = new BsonDocument("name", collectionName); 
    //filter by collection name 
    var collections = await _mongo.Database.ListCollectionsAsync(new ListCollectionsOptions { Filter = filter }); 
    //check for existence 
    return await collections.AnyAsync(); 
} 

var oldSmsLogExists = await CollectionExistsAsync("RrenameCollection").ConfigureAwait(false); 

if (oldSmsLogExists) 
    _mongo.Database.RenameCollection("RrenameCollection", "RenameCollection");