我有这个课程/文件:
public class Band
{
public string Name { get; set; }
public IEnumerable<Musician> Members { get; set; }
}
这就是我在乐队中更新成员的方式(Geddy的乐器和姓氏):
var query = Query.And(Query.EQ("Name", "Rushx"), Query.EQ("Members.FirstName", "Geddy"));
var update = Update.Set("Members.$.Instrument", "Vocals").Set("Members.$.LastName", "Lee");
var collection = MongoDbHelper.Db.GetCollection<Band>("Bands");
var result = collection.Update(query, update);
请注意,我故意拼错Rush(Rushx)。如果根文档不存在,我们需要抛出异常。那可能吗?我知道我可以检查一下:
Console.WriteLine(result.DocumentsAffected);
然而,这可能会失败,因为音乐家/成员不存在,我们不希望引起异常。我们可以先在一个单独的调用中检查根文档,但这不是原子的。在该检查和更新之间,数据库中的项目可能会发生变化。
那么......有没有办法知道根文档是否存在而进行更新,以便在缺少异常的情况下抛出异常?