我正在使用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);
}
答案 0 :(得分:0)
一个澄清。当您开始使用MongoClient时,官方MongoDB .Net驱动程序默认为已确认写入(写入问题1)。如果从使用MongoServer.Create(现已废弃)的旧样式开始,则默认为Unacknowledged。 还要确保您没有使用可将读取路由到辅助节点的读取首选项。