2016-05-19 9 views
5

Mi ha delle voci che inserisco in questo modo:DynamoDB: Che differenza fa se imposto un attributo su "NULL": "true" o semplicemente lo ometto?

PutItem:

"TableName": "pets", 
"Item": { 
    "petName": { 
     "S": "Cat" 
    }, 
    "hairColor": { 
     "S": "gray" 
    }, 
    "nickName": { 
     "S": "Kitty" 
    } 
} 

A volte però, il pets non hai nickname. Sono abbastanza nuovo per DynamoDB, e posso vedere, che posso gestire questo in due modi (almeno):

1)

"TableName": "pets", 
"Item": { 
    "petName": { 
     "S": "Cat" 
    }, 
    "hairColor": { 
     "S": "gray" 
    }, 
    "nickName": { 
     "NULL": "true" 
    } 
} 

2)

"TableName": "pets", 
"Item": { 
    "petName": { 
     "S": "Cat" 
    }, 
    "hairColor": { 
     "S": "gray" 
    } 
} 

Che differenza questo mi farà per me (ad esempio quando accederai ai dati in seguito)? E qual è la migliore pratica?

risposta

1

Impostare un attributo su "NULL" o ometterlo non è lo stesso.

Se non si imposta un attributo, ovviamente non esiste sull'elemento specifico. Un attributo con il tipo di dati "NULL" tuttavia contiene ma non contiene alcun valore (simile a null in JSON).

E.g. quando si effettua un confronto con l'operatore di confronto NULL, un attributo con la proprietà "NULL" sarà effettivamente falso. La denominazione qui è molto confusa, ma il comportamento è piuttosto well documented. Per l'operatore di confronto NULL dice:

test Questo operatore per l'inesistenza di un attributo, non sui dati tipo. Se il tipo di dati dell'attributo "a" è nullo e lo si valuta utilizzando NULL, il risultato è un falso booleano. Questo perché esiste l'attributo "a" ; il suo tipo di dati non è rilevante per l'operatore di confronto NULL .

Problemi correlati