NET C#-如何通过dynamodb中的映射值在带有条件表达式的列表中设置嵌套映射?

问题描述

问题

我们需要将一个映射值设置为一个列表,问题是我们不知道如何引用映射内的那些值之一来进行条件表达式的检查,因此我们不数据到来时有任何重复项。

问题是,我们试图在“ list_append”中使用“ if_not_exists”进行检查,但没有得到,重复项仍然存在,我们尝试进行

  1. “不包含”
  2. 在列表中具有索引的搜索,以对该值进行检查
  3. 与结构的比较

更新项目的结构

一些示例内联评论

var transactionData = new Dictionary<string,AttributeValue>
        {
             { "Id1",new AttributeValue { N = transacionDataModel.IdOne.ToString() } },{ "Id2",new AttributeValue { S = transacionDataModel.IdTwo } },{ "Price",new AttributeValue { N = transacionDataModel.Price.ToString() } },{ "DatatocheckCondition",new AttributeValue { S = transacionDataModel.Datatocheck.ToString() } },{ "Action",new AttributeValue { N = transacionDataModel.Action.ToString() } },{ "Date",new AttributeValue { S = transacionDataModel.Date} }
        };

await dynamoDbClient.UpdateItemAsync(new UpdateItemRequest
        {
            Key = new Dictionary<string,AttributeValue>()
            {
                { "PartitionDate",new AttributeValue {
                      S = "20200821"
                  }
                },{ "SortedIDKey",new AttributeValue {
                      N = "1"
                  }
                }
            },TableName = tableName,//UpdateExpression = "SET DataToSave= list_append(DataToSave,:newData)",//ConditionExpression = $"not contains(#DataToSave[0].#DatatocheckCondition,{transacionDataModel.Partida})",//UpdateExpression = "SET DataToSave= list_append(if_not_exists(DataToSave,:newData),//ConditionExpression = $"not (contains(#DataToSave.#DatatocheckCondition,:localDatatocheck))",UpdateExpression = "SET #DataToSave = list_append(#DataToSave,ConditionExpression = $"#DataToSave.#DatatocheckCondition <> :localDatatocheck",ExpressionAttributeNames = new Dictionary<string,string>
            {
                { "#DataToSave","DataToSave" },{ "#DatatocheckCondition","DatatocheckCondition" }
            },ExpressionAttributeValues =
            new Dictionary<string,AttributeValue>
            {
                { ":newData",new AttributeValue
                    {
                        L = new List<AttributeValue>
                        {
                            new AttributeValue()
                            {
                                M = transactionData
                            }
                        }
                    }
                },{
                    ":localDatatocheck",new AttributeValue
                    {
                        S = transacionDataModel.Datatocheck
                    }
                }
            }

        });
    }

数据结构

{
  "DataToSave": {
    "L": [
      {
        "M": {
          "Action": {
            "N": "1"
          },"Date": {
            "S": "25/08/2020 8:31:48"
          },"Id1": {
            "N": ""
          },"Id2": {
            "S": "d"
          },"DatatocheckCondition": {
            "S": "151"
          },"Price": {
            "N": "101"
          }
        }
      }
    ]
  },"PartitionDate": {
    "S": "20200821"
  },"SortedIDKey": {
    "N": "1"
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)