Golang을 사용하여 ID 배열이 있는 엔터티에 대한 데이터 저장소 쿼리
Google App Engine Datastore에서는 " IN' 쿼리를 사용하여 ID 배열을 기반으로 엔터티를 검색합니다. 그러나 이 기능을 달성하기 위한 대체 접근 방식이 있습니다.
범위를 사용한 쿼리(ID가 연속적인 경우)
ID가 연속적인 범위를 형성하는 경우 ">" (보다 큼) 및 "<="(보다 작거나 같음) 연산자를 사용하여 쿼리할 ID 범위를 지정합니다. 예:
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p> <p><strong>여러 쿼리 실행</strong></p> <p>연속 범위에 없는 ID의 경우 배열의 각 ID에 대해 별도의 쿼리를 실행할 수 있습니다. 여기에는 각 ID에 대한 새 쿼리 개체를 생성하고 해당 ID로 필터링하는 작업이 포함됩니다.</p> <pre class="brush:php;toolbar:false"><code class="go">for _, id := range ids { q := datastore.NewQuery("Category").Filter("Id =", id) // ... perform query and retrieve entities }</code>
GetMulti 함수
필터링하는 속성이 엔터티 키인 경우 자체적으로 datastore.GetMulti() 함수를 사용하여 키 배열을 기반으로 항목 목록을 검색할 수 있습니다.
<code class="go">var keys []*datastore.Key for _, id := range ids { keys = append(keys, datastore.NewKey(c, "Category", "", id, nil)) } categories := make([]Category, len(keys)) err := datastore.GetMulti(c, keys, categories) if err != nil { // Handle error }</code>
참고:
Filter() 메서드를 사용하여 여러 필터를 지정하면 AND 연산으로 결합됩니다. 따라서 q.Filter("Id =", id)를 사용하여 여러 ID로 필터링하려고 하면 모든 ID가 동일한 엔터티에 존재하지 않는 한 일치하는 엔터티가 없을 가능성이 높습니다.
위 내용은 Golang을 사용하여 Google App Engine Datastore에서 ID 배열로 항목을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!