0

예를 들어 문서 : 내가 물어 문서를 찾으려면목록 또는 배열에서 둘 이상의 값을 포함하는 문서에 대한 CloudSearch를 쿼리하려면 어떻게해야합니까?

{ 
    "name":"Bob Belcher", 
    "children":[ 
     "Tina", 
     "Louise", 
     "Gene" 
    ] 
} 

: 아이들 "티나"를 포함 AND 내가 할 수있는 방법을 아이들 "루이스"유사

이 포함 아이들 "티나"를 포함 AND 자녀 "Jack"이 포함되어 있지 않습니다.

문자열 대신 자식 개체를 사용할 수 있습니까? 이름 = "티나"어린이 포함되어 있고 이름 = "루이스"

예를 들어 문서와 아이들을 포함

{ 
    "name":"Bob Belcher", 
    "children":[ 
     { 
      "name":"Tina" 
     }, 
     { 
      "name":"Louise" 
     }, 
     { 
      "name":"Gene" 
     } 
    ] 
} 

하나 더, 우리는이 많은 층이 깊이 할 수 있습니까? 같은

{ 
    "name":"Bob Belcher", 
    "children":[ 
     { 
      "name":"Tina", 
      "pets":[ 
       "Spot", 
       "Snowball" 
      ] 
     }, 
     { 
      "name":"Louise", 
      "pets":[ 
       "Liz" 
      ] 
     }, 
     { 
      "name":"Gene" 
     } 
    ] 
} 

내가 뭔가를 물어 봐도 : 애완 동물 "스팟"을 포함 어린이를 포함하고 애완 동물 "눈덩이"가 포함 어린이를 포함

답변

0

1) SET DynamoDB의 데이터 유형으로 정의 속성 children, 그것은 가능하다 CONTAINSNOT CONTAINS으로 필터링 할 수 있습니다. 예 -

FilterExpression: " contains (product, :productSet) AND not contains (product, :productSetNotContains)", 
    ExpressionAttributeValues : { 
     ':key1' : 2016, 
     ':titleval' : "The Big New Movie 1", 
     ':productSet' : "milk", 
     ':productSetNotContains' : "egg" 

    } 

2) LIST DynamoDB의 데이터 형식으로 정의 된 속성 children, CONTAINS를 사용하여 필터링 할 수있다. 소자의 전체 값 티, 동물의 특성 값도 필요에 맞게하기 위해, 즉 알려진 경우

var childrenTina = {"name":"Tina"}; 
var childrenLouise = {"name":"Louise"}; 

FilterExpression: " contains (children, :childrenTina) AND contains (children, :childrenLouise) ", 
    ExpressionAttributeValues : { 
     ':key1' : 2016, 
     ':titleval' : "The Big New Movie 1", 
     ':childrenTina' : childrenTina, 
     ':childrenLouise' : childrenLouise 

    } 

3) 적층 배열 깊이를 들어, 필터를 사용하여 수행 될 수 CONTAINS.

DynamoDB 용어에서 아래의 구조는 MAP inside LIST이 있음을 의미합니다. 즉, LIST의 각 요소는 MAP입니다. MAP 데이터 전체를 사용할 수있는 한 CONTAINS 함수를 사용하여 데이터를 필터링 할 수 있습니다.

"name":"Tina", 
      "pets":[ 
       "Spot", 
       "Snowball" 
      ]