0

私はbooksというコレクションを持っています。特定の本を閲覧するときに、ID で本を取得します。しかし、ドキュメントを読むたびにビューカウントを 1 ずつ増やしたいと思っています。

2 つのコマンドを使用できます。1 つは読み取り用、もう 1 つはビュー カウンターを 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 に答える