2014-03-31 3 views
1

내 Datastore에서 동일한 특성의 값을 필터로 지정하여 일부 엔티티를 조회하고 싶습니다. 는 예를 들어 나는 다음과 같이 엔티티라는 이름의 푸 정의가 :GAE Datastore에서 값 목록을 지정하여 엔티티를 쿼리하십시오.

type Foo struct { Id int64 Name string CreatorId int64 }

그리고 1, 5, CreatorId로 (23)이있는 모든 푸 개체를 검색합니다.

q := datastore.NewQuery("Foo").Filter("CreatorId =", 1).Filter("CreatorId =", 5).Filter("CreatorId =", 23)

그러나 제로 엔티티가 가져온되었습니다 : 그래서 나는 다음과 같은 쿼리를 정의합니다. 설명서 (https://developers.google.com/appengine/docs/go/datastore/reference)를 살펴 보았지만 이러한 종류의 쿼리를 수행하는 방법은 설명하지 않았습니다.

일부 도움을 주시면 대단히 감사하겠습니다.

+0

해당 쿼리는 CreatorId가 1, 5 및 23 인 엔터티 만 반환합니까? 귀하의 데이터 모델에 따라 가능하지 않다고 가정 할 것입니다 (그래서 0은 레코드입니다). – beercodebeer

+0

'검색어'를 사용해야합니다. Go에서 구문을 모르지만 Python은 .filter ('CreatorID IN', [1, 5, 23])입니다. 이것들은 비싸지 만 목록에있는 항목이 많을수록 더 많은 쿼리가 수행됩니다. –

답변

1

Java 및 Python을 사용하면 콜렉션 (IN 쿼리)의 값에 대한 쿼리를 실행할 수 있습니다. 그러나 표면적으로이 쿼리는 일련의 EQUALS 쿼리로 실행됩니다. 그것은 약간의 코드이지만 루프 내에서 정규 EQUALS 쿼리를 실행하는 것보다 성능면에서는 차이가 없습니다.

+0

그게 제가 필터를 캐스케이드로 사용해서하고있는 일입니다. 나는 그것이 AND 연산 (1 AND 5 AND 23 = 0 결과)과 비슷하다는 느낌을 가지고있다. –

+0

3 개의 별도 쿼리를 실행하여 이러한 엔티티를 모두 가져와야합니다. –

+0

GO에서는 IN 쿼리를 사용할 수 없습니다. 나는 3 개의 분리 된 질문 방법을 지킬 것이다. –

관련 문제