2012-08-09 10 views

답변

29

, 그것은 말한다 :

DBCursor.count()가 : 쿼리와 일치하는 개체의 수를 계산합니다. 이 은 이 아니며은 제한/건너 뛰기를 고려합니다.

DBCursor.size() : 쿼리와 일치하는 개체의 수를 계산합니다. 이 은 제한/건너 뛰기를 고려합니다.

+0

둘 다 똑같은 것처럼 보입니다 ... 왜 그들은 2 가지 방법을 도입 했습니까? 두 가지간에 성능 차이가 있습니까? – Byter

+0

그들은 동일하지 않습니다. 하나는 제한/건너 뛰기를 고려하지만 다른 것은 고려하지 않습니다. –

+13

나는 그 차이가'does not take'에 있다고 생각하고'does take'는 제한/건너 뛰기를 고려합니다. –

1

답변보다 자세한 내용은 우리 팀이이 두 가지를 혼합하는 문제에 직면했음을 지적하고자합니다.

는 그것은 cursor.count() 방법을 호출 한 후, 한계가 이 (plase이 this 다른 질문을 살펴) 무시되었습니다 밝혀졌다
DBCursor cursor = collection.find(query).limit(batchSize); 

logger.info("{} items found.", cursor.count()); 

while (cursor.hasNext()) { 
... 
} 

, 우리가 얼마나 많은 알고 구성 :

우리는 이런 일이 있었다 항목이 쿼리에 의해 반환되었으므로 을 호출하면 원하지 않는 부수 효과가 있었기 때문에 cursor.size() 메서드를 호출해야했습니다.

우리가 직면 한 문제의 출처를 찾기가 쉽지 않았기 때문에 다른 사람들에게 도움이되기를 바랍니다.

+0

'cursor.count()'는 문서화 된 것처럼 한계를 무시할뿐만 아니라 커서를 반복 처리하는 것과 같은 후속 작업이 한계가 설정되지 않은 것처럼 동작하도록 커서에서 제한을 실제로 제거 했습니까? –