我有一个名为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()会再次命中数据库吗?
答案 0 :(得分:1)
不,它不会再次访问数据库。
如果对此类事情有疑问,请查看the source。它显示GetModifiedDocumentAs
方法只是从现有的Response
对象访问生成的doc并将其强制转换为请求的类型。