Go를 사용하여 Google App Engine Datastore에서 ID로 항목 검색
Google App Engine Datastore로 작업할 때는 효율적인 쿼리를 수행하는 것이 중요합니다. 특정 엔터티를 검색합니다. 이러한 쿼리 중 하나는 ID 배열을 기반으로 항목을 필터링할 수 있는 "IN 배열" 쿼리입니다.
"IN 배열" 쿼리 수행에 대한 도전
In Go, 데이터 저장소 API는 "IN" 배열 필터를 직접 지원하지 않습니다. datastore.NewQuery("Category").Filter("Id IN", ids)를 사용하려고 하면 오류가 발생합니다.
대체 접근 방법
"IN " 필터를 직접 사용할 수 없으므로 동일한 결과를 얻을 수 있는 대체 접근 방식이 있습니다.
1. 반복 쿼리
배열의 각 ID에 대해 별도의 쿼리를 실행할 수 있습니다. 예를 들면 다음과 같습니다.
<code class="go">ids := []int64{1,2,3,4} for _, id := range ids { q := datastore.NewQuery("Category").Filter("Id =", id) }</code>
2. 범위 쿼리
ID가 연속적인 범위에 있는 경우 "IN" 필터 대신 범위 쿼리를 사용할 수 있습니다. 예:
<code class="go">ids := []int64{1,2,3,4} q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</code>
3. GetMulti 함수
필터링하는 속성이 항목 키 자체인 경우 datastore.GetMulti() 함수를 사용하여 키 배열로 지정된 항목 목록을 검색할 수 있습니다. 예:
<code class="go">keys := make([]*datastore.Key, len(ids)) for i, id := range ids { keys[i] = datastore.NewKey(c, "Category", "", id, nil) } categories := make([]Category, len(keys)) err := datastore.GetMulti(c, keys, categories)</code>
참고:
대규모 배열의 경우 반복 쿼리가 덜 효율적일 수 있습니다. 범위 쿼리는 연속 범위에 적합하지만 간격을 지원하지 않습니다. GetMulti는 키로 항목을 검색하는 데 최적화되어 있습니다.
위 내용은 Go를 사용하여 Google App Engine Datastore에서 ID로 항목을 검색하는 방법: \'IN 배열\' 쿼리의 대안?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!