【问题标题】:FindAndModify missing in mongodb C# drivermongodb C# 驱动程序中缺少 FindAndModify
【发布时间】:2016-04-12 07:05:24
【问题描述】:

我正在使用 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")
     });

但我收到以下错误:

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

附上截图

【问题讨论】:

    标签: c# mongodb driver


    【解决方案1】:

    在新的 2.0 驱动程序中,现在称为 FindOneAndUpdate。

    您的问题中混合了旧版和新格式 - Query.EQ 也来自旧版驱动程序 - 所以我建议作为第一步删除旧版驱动程序。

    那么你应该可以通过使用Builders得到你需要的东西,例如:

    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"));
    

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多