Можно ли будет обновить единичные значения во вложенном элементе JSON DynamoDB на основе условия? - PullRequest
0 голосов
/ 30 января 2019

У меня есть модель данных DynamoDB для моих элементов, которая довольно вложенная, и я хотел бы обновить определенное значение в JSON моего элемента на основе условия, и я не могу найти хороший способ сделать то же самое.Упрощенная версия моей модели данных выглядит следующим образом:

 {
  "name": "test",
  "Script": [
    {
      "DeliverDate": "26-09-2018",
      "ID": "SCR001",
      "Name": "SCR001",
      "nonname": "automation",
      "Purpose": "Help",
      "Status": "null",
      "Time": "4"
    },
    {
      "DeliverDate": "27-09-2018",
      "ID": "SCR002",
      "Name": "2",
      "nonname": "automation",
      "Purpose": "Help2",
      "Status": "Validated",
      "Time": "5"
    }
  ],
  "Header": [
    {
      "ID": "DEV001",
      "Name": "API",
      "nonname": "project",
      "Status": "null",
      "Time": "10"
    }
  ],
  "Forms": [
    {
      "ID": "SHIFT001",
      "nonname": "Forms",
      "reply word count": "300",
      "Shiftdate": "21-09-2018",
      "Status": "null",
      "Time": "8",
      "URL": "https://www.google.com"
    }
  ],
  "Testing": [
    {
      "Gone": "tests123",
      "EndDate": "15-06-2018",
      "ID": "HIRING001",
      "location": "London",
      "nonname": "testing",
      "StartDate": "15-06-2018",
      "Status": "null",
      "Time": "22"
    }
  ],
  "ABC": [
    {
      "ID": "ABC001",
      "nonname": "query",
      "Percentage": "100%",
      "PublishedDate": "26-12-2018",
      "Status": "null",
      "Time": "400",
      "Title": "trail",
      "URL": "http://google.com"
    }
  ],
  "BCD": [
    {
      "Duration": "2",
      "ID": "BCD001",
      "nonname": "BCD",
      "PublishedDate": "26-12-2018",
      "Status": "null",
      "Time": "400",
      "Title": "AWS App"
    }
  ],
  "HELLO": [
    {
      "Article name": "User",
      "Article url": "http://google.com",
      "ID": "HELLO001",
      "nonname": "HELLO",
      "Publish Date": "24-10-2018",
      "Status": "null",
      "Time": "800",
      "Views": "300",
      "Word Count": "500"
    }
  ],
  "MASSEFFECT": [
    {
      "DilieverDate": "26-12-2018",
      "ID": "MASSEFFECT001",
      "nonname": "l3",
      "SessionDuration": "4",
      "Status": "null",
      "Time": "400",
      "topic": "API"
    }
  ],
  "DEADSPACE": [
    {
      "ID": "DEADSPACE001",
      "Month": "Jan",
      "nonname": "DEADSPACE",
      "Status": "null",
      "Time": "300",
      "Year": "2018"
    }
  ],
  "GAMING": [
    {
      "Batch": "Batch",
      "DelieverDate": "26-12-2018",
      "ID": "GAMING001",
      "nonname": "GAMING",
      "Profile": "trial",
      "SessionDuration": "4",
      "Status": "null",
      "Time": "400",
      "Topic": "GAMING"
    }
  ],
  "ZOO": [
    {
      "ActivityName": "ZOO",
      "EndTime": "Everything happens",
      "ID": "ZOO001",
      "nonname": "others",
      "ProofSubmitted": "Everything happens all once.",
      "StartTime": "avc",
      "Status": "null",
      "Time": "keyword"
    },
    {
      "ActivityName": "PS4",
      "EndTime": "Everything happens!!!!!",
      "ID": "OTHER001",
      "nonname": "others",
      "ProofSubmitted": "Everything happens all once.",
      "StartTime": "avc",
      "Status": "null",
      "Time": "keyword"
    }
  ],
  "WORK": [
    {
      "Date": "26-12-2018",
      "ID": "WORK001",
      "nonname": "work",
      "Status": "null",
      "Time": "4",
      "Topic": "work"
    }
  ]
}

В этом случае я хотел бы обновить параметр «Статус» в блоке, если поле «ID» в этом блоке содержитконкретное значение.Например, если «ID» в блоке - «WORK001», я хотел бы изменить «Status» на «Changed», и мой вариант использования включает изменение поля «Status» любого подблока JSON на основе ID.в этом подблоке.

Пример:

"WORK": [
        {
          "Date": "26-12-2018",
          "ID": "WORK001",
          "nonname": "workshop",
          "Status": "null",
          "Time": "4",
          "Topic": "workshop"
        }
      ] 

Кому:

"WORK": [
        {
          "Date": "26-12-2018",
          "ID": "WORK001",
          "nonname": "work",
          "Status": "Changed",
          "Time": "4",
          "Topic": "work"
        }
      ] 

Я рассмотрел вызов UpdateItem API и API PutItem вызов в документации AWS, но я не могу найти хороший способ использовать вызовы API для этого варианта использования.Любая помощь о том, как это сделать, была бы действительно полезной.Заранее спасибо.

...