在mongodb C#驱动程序中缺少FindAndModify

Par*_*osh 2 c# driver mongodb

我使用Mongodb shell 3.2.4和C#驱动程序2.2.3.我甚至安装了旧版驱动程序2.2.3但仍面临以下问题.

我想为我的一个字段即eventID使用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")
     });
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

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?)
Run Code Online (Sandbox Code Playgroud)

附上截图
在此输入图像描述

Kev*_*ake 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"));
Run Code Online (Sandbox Code Playgroud)