1

以下のコードを使用してmongodbで更新しようとすると、結果がnullになります: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は、指定nullされたコードの結果としてを返します(詳細については、更新を参照してください)。

たとえば、接続が次のような場合:

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 に答える