Mongodb C#驱动程序 - 更新文档,然后选择包含更新文档的集合

时间:2013-12-09 04:32:56

标签: c# mongodb mongodb-.net-driver

我正在使用C#驱动程序更新Mongodb中的文档。我已经验证更新是否成功完成,但是如果我在更新后立即选择包含更新文档的集合,则我没有立即看到新值。如果我在更新后但在选择之前在我的代码中放置断点,我将在Select中看到结果中的新值。如果我让代码直接运行,我会在我的名字集合中获取旧值。我尝试改变写作问题,但我认为不是这样。有没有办法将这两个操作链接在一起,所以在更新完成之前不会发生选择?

var qry = Query.EQ("_id", new ObjectId(id));
var upd = Update.Set("age", BsonValue.Create(newAge));

db.GetCollection<MongoTest>("mongotest").Update(qry,upd);

... would like to pause here until update is complete ...    

var names = db.GetCollection<MongoTest>("mongotest")
     .FindAll().SetSortOrder(SortBy.Ascending("name"))
     .ToList<MongoTest>();

if (names.Count() > 0)
{
     return View(names);
}

1 个答案:

答案 0 :(得分:0)

一个澄清。当您开始使用MongoClient时,官方MongoDB .Net驱动程序默认为已确认写入(写入问题1)。如果从使用MongoServer.Create(现已废弃)的旧样式开始,则默认为Unacknowledged。 还要确保您没有使用可将读取路由到辅助节点的读取首选项。