DynamoDB:我将属性设置为"NULL":"true"或者只是省略它会有什么不同?

Nie*_*ian 6 amazon-dynamodb

我有一些像这样插入的项目:

PutItem:

"TableName": "pets",
"Item": {
  "petName": {
      "S": "Cat"
    },
  "hairColor": {
      "S": "gray"
    },
  "nickName": {
      "S": "Kitty"
    }
 }
Run Code Online (Sandbox Code Playgroud)

然而,有时候,pets没有nickname.我对dynamoDB很新,我可以看到,我可以通过两种方式处理这个问题(至少):

1)

"TableName": "pets",
"Item": {
  "petName": {
      "S": "Cat"
    },
  "hairColor": {
      "S": "gray"
    },
  "nickName": {
      "NULL": "true"
    }
 }
Run Code Online (Sandbox Code Playgroud)

2)

"TableName": "pets",
"Item": {
  "petName": {
      "S": "Cat"
    },
  "hairColor": {
      "S": "gray"
    }
 }
Run Code Online (Sandbox Code Playgroud)

这会给我带来什么不同(例如,之后访问数据时)?什么是最佳做法?

bir*_*aum 5

将属性设置为“NULL”或忽略它是不同的

如果您根本不设置属性,则该属性显然不存在于特定项目上。然而,数据类型为“NULL”的属性确实存在,但不包含任何值(类似于nullJSON)。

例如,当使用比较运算符进行比较时,NULL具有属性“NULL”的属性实际上将为假。这里的命名非常混乱,但行为却有很好的记录。对于比较运算符,NULL它说:

该运算符测试属性是否不存在,而不是其数据类型。如果属性“a”的数据类型为 null,并且使用 NULL 对其求值,则结果为布尔值 false。这是因为属性“a”存在;它的数据类型与 NULL 比较运算符无关。