当我在发电机Db中添加映射对象时,为什么它的顺序会自动改变?

时间:2017-04-12 05:06:06

标签: mapping amazon-dynamodb

Record1: [{
    "business_id": 2,
    "form_id": 1,
    "forms": {
        "v2": {
            "id": "f522",
            "is_deleted": 0,
            "title": "Form 1"
        },
        "v3": {
            "id": "f8b6",
            "is_deleted": 0,
            "title": "Form 2"
        },
        "v1": {
            "id": "fw56",
            "is_deleted": 0,
            "title": "Form 3"
        },
        "v5": {
            "id": "fw56",
            "is_deleted": 0,
            "title": "Form 3"
        },
        "v4": {
            "id": "fw56",
            "is_deleted": 0,
            "title": "Form 3"
        }
    }
}]

我将在dynamo Db表中添加以上记录。我将在表单对象中添加映射。我按照以下顺序添加了映射值v2,v3,v1,v5,v4。但它存储在dynamo DB中,如下面的顺序v1,v2,v3,v4,v5。 我不想改变映射顺序。请建议。

1 个答案:

答案 0 :(得分:0)

问题是,您的forms属性具有Map类型,这不会保留项目的顺序。

来自DynamoDB docs

  

地图类型属性可以存储名称值的无序集合   对

要保留forms容器中子项的顺序,我会将属性转换为List,如下所示:

Record1: {
    "business_id": 2,
    "form_id": 1,
    "forms": [
      {"formKey": "v2", "id": "f522", "is_deleted": 0, "title": "Form 1"},
      {"formKey": "v3", "id": "f8b6", "is_deleted": 0, "title": "Form 2"}, 
      {"formKey": "v1", "id": "fw56", "is_deleted": 0, "title": "Form 3"},
      {"formKey": "v5", "id": "fw56", "is_deleted": 0, "title": "Form 3"},
      {"formKey": "v4", "id": "fw56", "is_deleted": 0, "title": "Form 3"}    
    ]
}