2014-03-01 1 views
0

나는 단지 이상하게 보이는 몇 시간을 디버깅하는 데 보냈다. 그러나 버그인지 아니면 잘못하고 있는지 알 수 없습니다. 짧은 버전, NDB 질의와 순서에 부등식 필터가있는 경우에는 같은 줄이어야합니다.NDB Query Chaining oddity - Order + Inequality?

참고 : 아래에 표시된 모든 데이터는 데이터 저장소의 날짜가 포함되어있어 일부는 마이크로 초가 아니지만 순서대로 생성되었습니다.

#Q1. Yields the correct results: 
q = BlogPost.query().filter(BlogPost.published_date > PUBLISHED_DATE_MIN).order(-BlogPost.published_date) 
for p in q.fetch(1000): 
    print "%s - %s" % (p.published_date, p.title) 

# 2014-03-02 21:49:25 - First 
# 2014-03-01 22:51:14.998963 - Should be 2nd 
# 2014-03-01 21:49:54.273152 - Should be Third 

다음은 처음에 내가 가진 것입니다. 참고 : 순서는 별도의 라인에

q = BlogPost.query().filter(BlogPost.published_date > PUBLISHED_DATE_MIN) 
q.order(-BlogPost.published_date) 

for p in q.fetch(1000): 
    print "%s - %s" % (p.published_date, p.title) 
# 2014-03-01 21:49:54.273152 - Should be Third 
# 2014-03-01 22:51:14.998963 - Should be 2nd 
# 2014-03-02 21:49:25 - First 

NDB 쿼리는하지만, 그때는 불평등을 제거하고 내가 얻을, 단지 정렬되지 않은 것으로 나 주문 리버스 나타납니다

q = BlogPost.query() #.filter(BlogPost.published_date > PUBLISHED_DATE_MIN) 
q.order(-BlogPost.published_date) 

for p in q.fetch(1000): 
    print "%s - %s" % (p.published_date, p.title) 
# 2014-03-02 21:49:25 - First 
# 2014-03-01 22:51:14.998963 - Should be 2nd 
# 2014-03-01 21:49:54.273152 - Should be Third 

나는이 행동을보고 있어요 sdk 콘솔뿐만 아니라 원격 콘솔 및 코드를 배포 할 때 실제 appspot에 대한 정보를 제공합니다. 이 버그 (가능성이 높음) 또는 누락 된 것입니까?

+2

'db '의 동작을'ndb'와 혼동하는 것은 아래의 @Greg 응답을보십시오. ndb 치트 시트 - 검색어 섹션 (https://docs.google.com/document/d/1AefylbadN456_Z7BZOpZEXDq8cR8LYu7QgI7bt5V0Iw/mobilebasic)을 살펴볼 수도 있습니다. –

답변

4

q.order(-BlogPost.published_date)을 실행하면 사용자가 할당하지 않은 새 쿼리가 만들어지고 반환됩니다. 당신이 갖고 싶어 :

q = q.order(-BlogPost.published_date)