수는

2014-09-25 2 views
1

과 다릅니다. 최근에는 pymongo를 사용하여 MongoDB에서 데이터를 쿼리하는 작은 응용 프로그램을 작성했습니다. 다음 코드는 다음과 같습니다.수는

colls = collection.find({'created': {'$gt': datetime.datetime(2014, 9, 14, 10), 
            '$lt': datetime.datetime(2014, 9, 14, 17)}}, 
         {'created':1, '_id': 0}) 
print 'Totally count is ', colls.count() 

지금까지 모든 것이 정상입니다. 그러나

results = [] 
for item in colls: 
    results.append(item) 

나는 결과의 길이 미만 colls.count() 것으로 나타났습니다. 너무 이상 했어? 왜 다른가?

답변

0

샤르도어 클러스터에서 이것을 실행하고 this bug을 누르지 않으면 검색 쿼리에 포함 된 것보다 컬렉션에 더 많은 요소가 있음을 알 수 있습니다. 확인하려면 매개 변수없이 쿼리를 다시 실행하십시오.

colls = collection.find({}, {'created':1, '_id': 0}); 

그런 다음 해당 길이를 계산 결과와 비교하십시오. 그들이 다른 경우

, 그럼 그냥 값이 지정된 범위 밖에있는 것을 확인하기 위해 조건을 전환 :

colls = collection.find({'created': {'$lt': datetime.datetime(2014, 9, 14, 10), 
            '$gt': datetime.datetime(2014, 9, 14, 17)}}, 
         {'created':1, '_id': 0}) 

그것이 당신에게 아무것도 얻을 수 없다면, 당신은 당신이 아닌 날짜가있을 수 있습니다 created에 인덱스를 가지고 값을 쿼리 할 때 one type will match 만 입력하면 hint 다른 인덱스를 반환 할 수 있습니다.

+0

안녕하세요, Adam, '생성'에 색인이 생성되지 않았습니다. 그리고 그것들은 찾기 질의에 있지 않지만 count()에 관여하고 있음을 알기가 어렵습니다. 찾기 쿼리에서 데이터가 손실됩니까? – Jacky

+0

그리고 나는 샤르드 클러스터에서 뛰지 않고있다. – Jacky