쿼리 결과 검색

쿼리를 만든 후, 검색 옵션의 개수를 지정하여 쿼리가 반환하는 결과를 추가로 제어할 수 있습니다. 앱의 쿼리를 구조화하는 것에 대한 자세한 내용은 데이터 저장소 쿼리를 참조하세요.

쿼리 결과 반복

Query 값의 Run 메소드를 사용하여 쿼리 결과를 반복하는 경우, Cloud Datastore는 일괄 처리 결과를 검색합니다. 기본적으로 각 일괄 처리에는 결과가 20개 포함됩니다. 모두 반환되거나 요청이 타임아웃될 때까지 쿼리 결과를 계속해서 반복할 수 있습니다.

쿼리와 일치하는 각 항목을 반복하려면 Run 메소드를 사용하여 Iterator를 얻고, IteratorNext 메소드를 사용하여 각 항목을 처리할 수 있습니다.

q := datastore.NewQuery("Person")
t := q.Run(ctx)
for {
	var p Person
	k, err := t.Next(&p)
	if err == datastore.Done {
		break // No further entities match the query.
	}
	if err != nil {
		log.Errorf(ctx, "fetching next Person: %v", err)
		break
	}
	// Do something with Person p and Key k
	doSomething(k, p)
}

쿼리와 일치하는 모든 항목을 동시에 검색하려면 GetAll 메소드를 사용합니다.

q := datastore.NewQuery("Person")
var people []Person
keys, err := q.GetAll(ctx, &people)
if err != nil {
	log.Errorf(ctx, "fetching people: %v", err)
	return
}
for i, p := range people {
	k := keys[i]
	// Do something with Person p and Key k
	doSomething(k, p)
}

한 항목에서 선택한 속성 검색하기

전체 항목이 아닌 한 항목에서 선택한 속성만 검색하려면 프로젝션 쿼리를 사용합니다. 이러한 유형의 쿼리는 전체 항목을 반환하는 쿼리보다 더 빨리 실행되고 비용도 더 적게 듭니다.

마찬가지로 키 전용 쿼리는 전체 항목이 아닌 해당 쿼리가 일치하는 항목의 키만 반환하므로 시간과 리소스가 절약됩니다. 이 유형의 쿼리를 만들려면 Query를 작성할 때 KeysOnly 메소드를 호출합니다.

q := datastore.NewQuery("Person").KeysOnly()

쿼리에 제한 설정하기

한 배치에 반환되는 결과의 최대 수를 제어하도록 쿼리에 제한을 지정할 수 있습니다. 다음 예에서는 Cloud Datastore에서 키가 가장 큰 사람 5명을 검색합니다.

q := datastore.NewQuery("Person").Order("-Height").Limit(5)
var people []Person
_, err := q.GetAll(ctx, &people)
// check err

for _, p := range people {
	log.Infof(ctx, "%s %s, %d inches tall", p.FirstName, p.LastName, p.Height)
}

다음 단계

  • Cloud Datastore의 쿼리에 대한 일반적인 제한사항을 알아봅니다.
  • 애플리케이션에서 편리하게 일괄적으로 쿼리 결과를 검색할 수 있게 해주는 쿼리 커서에 대해 알아봅니다.
  • 데이터 일관성 및 Cloud Datastore에서 다양한 유형의 쿼리를 사용하여 데이터 일관성을 유지하는 방법을 이해합니다.
  • Cloud Datastore의 기본 구문 및 쿼리 구조를 알아봅니다.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Go용 App Engine 표준 환경