2016-04-12 2 views
1

Я использую Mongodb shell 3.2.4 и C# драйвер 2.2.3. Я даже установил устаревший драйвер 2.2.3, но все еще столкнулся с следующей проблемой.FindAndModify отсутствует в mongodb C# драйвер

Я хочу использовать значение AutoIncremented для одного из полей i.e eventID, поэтому я пытаюсь использовать 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") 
    }); 

Но я получаю следующее сообщение об ошибке:

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?) 

Прикрепление скриншот
enter image description here

ответ

5

В новом драйвере 2.0, теперь это называется 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")); 
Смежные вопросы