2015-08-26 16 views
8

L'operazione di scansione Amazon DynamoDB consente di eseguire query su attributi nidificati di tipo Array o Object? Ad esempio,Supporto query nidificato DynamoDB

{ 
    Id: 206, 
    Title: "20-Bicycle 206", 
    Description: "206 description", 
    RelatedItems: [ 
     341, 
     472, 
     649 
    ], 
    Pictures: { 
     FrontView: "123", 
     RearView: "456", 
     SideView: "789" 
    } 
} 

Posso interrogare sulla RelatedItems[2] o Pictures.RearView attributi?

risposta

12

Sì, è possibile utilizzare uno Filter Expression, che è proprio come Espressione condizionale. La sezione che parla di the functions che è possibile utilizzare in questi tipi di espressioni menziona quanto segue:

"Per un attributo nidificato, è necessario fornire il percorso completo, per ulteriori informazioni, vedere Document Paths."

Il riferimento Document Paths contiene esempi su come fare riferimento a attributi nidificati in DynamoDB data types come Elenco (cosa si sta chiamando un array) e Mappa (cosa si sta chiamando un oggetto). Controlla che il riferimento per esempi su come farlo:

  • MyList [0]
  • AnotherList [12]
  • ThisList [5] [11]
  • MyMap.nestedField
  • MyMap. nestedField.deeplyNestedField
1

prega di notare che in DyanomoDB query e scan sono molto diverse (scan è un gran c operazione più ostinata). Quindi, mentre puoi filtrare su entrambi come indicato da @coffeeplease; è possibile eseguire query/indici solo su:

Lo schema chiave per l'indice. Ogni attributo nello schema della chiave dell'indice deve essere un attributo di livello superiore di tipo String, Number o Binary. Altri tipi di dati, inclusi documenti e set, non sono consentiti (ref).