通过单个调用读取和更新mongodb文档

时间:2013-05-16 21:35:07

标签: mongodb mongodb-.net-driver

我有一个名为books的集合。 当使用浏览某本书时,我会通过id获取该书。 但我每次阅读文档时都希望将查看次数增加1。

我可以使用2个命令:一个用于读取,另一个用于按1

更新视图计数器

有没有一个方法可以通过像findAndModify这样的单一命令来完成这个?

如何使用CSharp驱动程序使用它?

Books:
{
  {
     "_id": "1"
     "title" : "Earth Day",
     "author" : "John ",
     "pages" : 212,
     "price" : 14.5,
     "views" : 1000
  },
  {
     "_id": "2"
     "title" : "The last voyage",
     "author" : "Bob",
     "pages" : 112,
     "price" : 10.5,
     "views" : 100
  }
}

我有这个:

var query = Query.And(Query.EQ("_id", id));
            var sortBy = SortBy.Null;
            var update = Update.Inc("views", 1);
            var result = Books.FindAndModify(query, sortBy, update, true);

但是如何获取匹配的文件呢?

编辑:我搞定了..

return result.GetModifiedDocumentAs<T>();

我的问题这次调用GetModifiedDocumentAs()会再次命中数据库吗?

1 个答案:

答案 0 :(得分:1)

不,它不会再次访问数据库。

如果对此类事情有疑问,请查看the source。它显示GetModifiedDocumentAs方法只是从现有的Response对象访问生成的doc并将其强制转换为请求的类型。