Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MongoDB中计算计数器_Mongodb_Mongodb .net Driver - Fatal编程技术网

在MongoDB中计算计数器

在MongoDB中计算计数器,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我需要创建一个计数器,在我的网页中显示的多媒体项目(很可能是图像或视频)上跟踪“喜欢”/“心”,该功能非常标准,与facebook/Instagram/Dribble的功能非常相似 我想了解一些关于如何实现此类计数器的建议,我将在考虑其最佳性能的情况下继续执行此实现 到目前为止,我的实体模型如下: public class Portfolio:Entity { public int UserId { get; set; } public string Url { get; set

我需要创建一个计数器,在我的网页中显示的多媒体项目(很可能是图像或视频)上跟踪“喜欢”/“心”,该功能非常标准,与facebook/Instagram/Dribble的功能非常相似

我想了解一些关于如何实现此类计数器的建议,我将在考虑其最佳性能的情况下继续执行此实现

到目前为止,我的实体模型如下:

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驱动程序/MongoRepository

MongoDB支持原子增量操作。您可以在此处查看此文档:

这会将likes字段更新为投资组合中id为10的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);
var query=query.EQ(x=>x.UserId,10);
var update=update.Inc(x=>x.Likes,1);
收集、更新(查询、更新);

您认为如何为每个公文包项目设置一个数组用户ID,并对数组ID进行计数?我记得我读到计数函数的性能不好。
var query = Query<Portfolio>.EQ(x => x.UserId, 10);
var update = Update<Portfolio>.Inc(x => x.Likes, 1);

collection.Update(query, update);