1

Web ページに表示されるマルチメディア アイテム (画像またはビデオである可能性が高い) の「いいね」/「ハート」を追跡するカウンターを作成する必要があります。 .

このような種類のカウンターを実装する方法についてアドバイスをお願いします。最高のパフォーマンスを念頭に置いてこの実装を進めます。

これまでの私のエンティティモデルは次のとおりです。

public class Portfolio:Entity
{
    public int UserId { get; set; }
    public string Url { get; set; }
    public string Thumbnail { get; set; }
    public string FullSizeImage { get; set; }
    public string Description { get; set; }
    public MediaType MediaType { get; set; }
}

参考 までにドリブルのスクリーンショットをご覧くださいここに画像の説明を入力

C# と MongoDB Driver / MongoRepository を使用しています

4

1 に答える 1

2

MongoDB は、アトミック インクリメント操作をサポートしています。これに関するドキュメントはこちらにあります: http://docs.mongodb.org/manual/reference/operator/inc/

db.portfolio.update({ _id: 10},{ $inc: { likes: 1 } });

これにより、_id が 10 のポートフォリオの likes フィールドが 1 ずつ更新されます。2 人または 10 人の異なるユーザーが同時にこれを行ったとしても、インクリメント操作はそれらすべてをカウントします。

C# では、これを行う方法がいくつかありますが、ビルダーを使用するのが最も簡単です。

var query = Query<Portfolio>.EQ(x => x.UserId, 10);
var update = Update<Portfolio>.Inc(x => x.Likes, 1);

collection.Update(query, update);
于 2013-09-06T16:52:37.357 に答える