2016-04-12 7 views
1

私はMongodbシェル3.2.4とC#ドライバ2.2.3を使用しています。私はレガシードライバ2.2.3をインストールしていますが、それでも問題に直面しています。mongodb C#ドライバで見つからないFindAndModify

フィールドIDの1つ、つまりイベントIDにAutoIncremented値を使用したいので、FindAndModifyを使用しようとしていますが、見つからないようです。

しかし、私はエラーを取得、次の
_client = new MongoClient(); 
_database = _client.GetDatabase("users"); 
var counters = _database.GetCollection<BsonDocument>("counters"); 
var counterQuery = Query.EQ("_id", "eventId"); 

var findAndModifyResult = counters.FindAndModify(
     new FindAndModifyArgs() 
     { 
      Query = counterQuery, 
      Update = Update.Set("web", "testweb") 
    }); 

:新しい2.0ドライバでは、スクリーンショット
enter image description here

答えて

5

を取り付け

Error 2 'MongoDB.Driver.IMongoCollection<MongoDB.Bson.BsonDocument>' does not contain a definition for 'FindAndModify' and no extension method 'FindAndModify' accepting a first argument of type 'MongoDB.Driver.IMongoCollection<MongoDB.Bson.BsonDocument>' could be found (are you missing a using directive or an assembly reference?) 

が、これは今FindOneAndUpdateと呼ばれています。

あなたの質問に古いレガシー形式と新しい形式が混在しています.Query.EQもレガシードライバーのものです。そのレガシードライバーを最初の手順として削除することをお勧めします。

次にあなたがたとえば、ビルダーを使って、あなたが必要なものを得ることができる必要があります:

var _client = new MongoClient(); 
var _database = _client.GetDatabase("users"); 
var counters = _database.GetCollection<BsonDocument>("counters"); 
var counterQuery = Builders<BsonDocument>.Filter.Eq("_id", "eventId"); 

var findAndModifyResult = counters.FindOneAndUpdate(counterQuery, 
       Builders<BsonDocument>.Update.Set("web", "testweb")); 
関連する問題