繁体   English   中英

在 MongoDb C# 上的字典内增加一个值

[英]Increment a value inside dictionary on MongoDb C#

我需要增加一个存储在字典中的值,我的 object 的结构(基本上)如下:

public class OrderDetails : EntityBase
{
    public int OrderId { get; set; }
    public Dictionary<int, int> TotalViewsPerUser { get; set; }
}

由于这个 object 可以在多个请求之间进行竞争,我不能只是将 object 带到服务器,增加值然后再次保存....

所以,我需要做的是增加变量 TotalViewsPerUser 的值,字典键是 UserId。 如果没有密钥,我需要插入密钥并从值 1 开始

我查找了一些使用“Inc”的示例,并找到了以下示例,但是,我无法使其工作,因为 mongo 不会插入密钥

我所做的是:

var update = Builders<OrderDetails>.Update
            .Inc($"totalViewsPerUser.{userId}.v", 1);

MongoDB C# 驱动程序中的增量字典值

$inc行为

如果该字段不存在,则 $inc 创建该字段并将该字段设置为指定值。

虽然TotalViewsPerUserDictionary<int, int>类型,但其值为:

"totalViewsPerUser" : {
  1: 1
}

在文档中。 您不应为更新字段指定.v

var update = Builders<OrderDetails>.Update
    .Inc($"totalViewsPerUser.{userId}", 1);

UpdateResult updateResult = _collection.UpdateMany(
    FilterDefinition<OrderDetails>.Empty,
    update);

演示

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM