2015-08-26 36 views
8

Amazon DynamoDB扫描操作是否允许您查询ArrayObject类型的嵌套属性?例如,DynamoDB嵌套查询支持

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

能否在RelatedItems[2]Pictures.RearView属性查询?

回答

12

是的,你可以使用Filter Expression,就像条件表达式一样。有关the functions的部分,您可以在这些类型的表达式中使用以下内容:

“对于嵌套属性,您必须提供其完整路径;有关更多信息,请参阅Document Paths

Document Paths引用有关于如何引用像List(你正在调用一个数组)和Map(你正在调用一个对象)的DynamoDB data types嵌套属性的例子。检查出参考关于如何这样做的示例:

  • MYLIST [0]
  • AnotherList [12]
  • ThisList [5] [11]
  • MyMap.nestedField
  • MyMap中。 nestedField.deeplyNestedField
1

请注意,在DyanomoDB queryscan有很大的不同(scan是一个非常ç ostlier操作)。所以虽然你可以像@coffeeplease指出的那样过滤两者;您只能查询/索引:

索引的关键模式。索引键架构中的每个属性都必须是String,Number或Binary类型的顶级属性。其他数据类型,包括文档和集合,是不允许的(ref)。