>  기사  >  백엔드 개발  >  Go를 사용하여 Google App Engine Datastore에서 ID로 항목을 검색하는 방법: \"IN 배열\" 쿼리의 대안?

Go를 사용하여 Google App Engine Datastore에서 ID로 항목을 검색하는 방법: \"IN 배열\" 쿼리의 대안?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 12:50:02354검색

How to Retrieve Entities by IDs in Google App Engine Datastore with Go: Alternatives to

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.