0

我有一个名为书籍的收藏。使用浏览特定书籍时,我通过 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() 会再次访问数据库吗?

4

1 回答 1

1

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

当对这样的事情有疑问时,请查看源代码。它表明该GetModifiedDocumentAs方法只是从现有Response对象访问生成的文档并将其转换为请求的类型。

于 2013-05-17T01:02:36.577 回答