몽고db에서 데이터를 조회하는 함수는
find() 와 findOne()이 있는것으로 알고 있습니다.
findOne()은 한건의 데이터만 확인할 수 있으며, 도큐먼트 자체를 반환하고
find()는 여러건의 데이터를 확인 할 수 있으며, 커서를 반환해주고 그것을 반복하여 값을 확인하는 것으로 알고 있습니다.
여기서 궁금한 것은
도큐먼트자체를 반환하는것과 커서를 반환하는 것의 차이가 무엇인지 모르겠습니다.
성능상 커서를 이용한 find가 유리한 것은 알게 되었는데
정확히 몽고db의 커서가 어떻게 존재하는것이기에 성능에 유리한지,
왜 도큐먼트 자체를 반환하면 느린것인지 잘 모르겠습니다.
(디스크 i/o가 발생하는 것인가요? 그렇다면 커서를 사용한다면 디스크 i/o가 발생하지 않는것인지...)
도움주신다면 감사하겠습니다.
설명하신 부분에 답이 있는 것 같아 보이는데요.
findOne : document 반환 ==> read data(data I/O) and return
find : cursor 반환 ==> data read 없이, 참조할 수 있는 cursor 반환
return by value 와 return by referrence 정도의 차이로 보입니다만,
몽고DB 자체 메뉴얼이나 기술문서에 해당 설명이 없다면 결국은 유추하거나 테스트 결과로 검증할 수 밖에 확인할 수 없지 않을까요? (관련 자료구조를 오픈하지는 않았을 것 같습니다만)
https://blog.serverdensity.com/checking-if-a-document-exists-mongodb-slow-findone-vs-find/