更新时,如果MongoDB文档不存在则抛出异常

时间:2014-01-27 20:50:10

标签: c# mongodb

我有这个课程/文件:

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

然而,这可能会失败,因为音乐家/成员不存在,我们不希望引起异常。我们可以先在一个单独的调用中检查根文档,但这不是原子的。在该检查和更新之间,数据库中的项目可能会发生变化。

那么......有没有办法知道根文档是否存在进行更新,以便在缺少异常的情况下抛出异常?

1 个答案:

答案 0 :(得分:0)

也许你可以使用findAndModify

这是一个原子命令,它可以返回操作结果。但请记住,它只会更新一个文档。