1

当尝试使用以下代码使用 mongodb 进行更新时,我的结果为空:在 C# 中

public bool UpdateContact(string id, Contact item)       
{
    IMongoQuery query = Query.EQ("_id", id);
    item.LastModified = DateTime.UtcNow;
    IMongoUpdate update = Update
        .Set("Email", item.Email)
        .Set("LastModified", DateTime.UtcNow)
        .Set("Name", item.Name)
        .Set("Phone", item.Phone);
    WriteConcernResult result = _contacts.Update(query, update);
    return result.UpdatedExisting;
}
4

1 回答 1

2

如果您没有为 C# 驱动程序(以及可能的其他驱动程序)使用新的连接样式,则您的连接可能被配置为默认没有 WriteConcern

如果没有配置 WriteConcern,C# API 将返回 anull作为您提供的代码的结果(有关更多信息,请参阅更新)

例如,如果您的连接是这样的:

var connectionString = "mongodb://localhost";
var server = MongoServer.Create(connectionString); // deprecated
var database = server.GetDatabase("test"); // WriteConcern defaulted to Unacknowledged

这将被配置为无写入问题。

您应该使用这种风格(从 C# 1.7 驱动程序开始):

var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("test"); // WriteConcern defaulted to Acknowledged

不同之处在于您需要使用MongoClient类(并从该对象实例中获取和)MongoServerMongoDatabase

于 2013-02-12T14:50:16.207 回答