アプリケーションのテスト中に奇妙な動作に遭遇しました。複数のドキュメントを更新し、これらのフィールドの1つを1つ増やします(他のフィールドも-1つ減らしますが、これがポイントだとは思わないでください)。
Query = { "_id" : { "$in" : [ObjectId("4fbf8481a975b5237c56f221"),
ObjectId("4fbf8481a975b5237c56f222"),
ObjectId("4fbf8481a975b5237c56f223")] } };
Update = { "$inc" : { "PartlyCompleted" : -1, "Completed" : 1 } }
最初のドキュメントは正常に更新されますが、他の2つのドキュメントは影響を受けません。
その理由は何でしょうか。どこを見ればいいのか教えてください。
いくつかの追加情報。C#の公式ドライバーを使用しています。コードの一部を次に示します。
_personsId = new BsonArray();
_personsId.AddRange(personsId.Where(x => DataService.IsIdValid(x)).
Select(x => new ObjectId(x)).ToArray());
var query = Query.In("_id", _personsId);
var update = Update.Combine(
Update.Inc("Completed", 1 ),
Update.Inc("PartlyCompleted", -1));
DataService.PersonSet.Collection.Update(query, update);
以下のクエリで返されたドキュメントの数も確認しましたが、3です。
var count = DataService.PersonSet.Collection.Count(query);