• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

cnt = members.find({"email": email}).count() 관련 질문입니다 !

22.10.18 21:42 작성 조회수 233

1

안녕하세요 강의 잘 보고있습니다.

cnt = members.find({"email": email}).count() 관련해서 질문이 있는데요, 저번 강의에서도 find().count()에 버전 관련 오류가 발생했었고 이번에도 당연히 [AttributeError: 'Cursor' object has no attribute 'count’] 오류가 발생했는데요, 그래서 구글링을 통해

cnt = members.collection.estimated_document_count({"email": email}) 
if cnt > 0: 
    flash("중복된 이메일 주소입니다.") 
    return render_template("join.html")

collection.estimated_document_count({"email": email}) 를 찾아서 적용했고 커서 오류를 해결했습니다. 이렇게 회원가입 db를 members로 잘 넘겼는데요,

이메일 주소 중복 부분에서 시크릿키 적용을 한 후에도 이메일이 중복돼도 회원가입이 되고 db가 넘어가더라구요.

그래서 또 구글링을 했고

 cnt = members.count_documents({"email": email})
        if cnt > 0:
            flash("중복된 이메일 주소입니다.")
            return render_template("join.html")

count_documents({"email": email})

코드로 문제 해결을 하기는 했는데요, 여기서

'count_documents'와 'collection.estimated_document_count'의 차이를 알고싶습니다.

아무리 찾아봐도 차이점을 못찾겠어요. 차이점 알려주시면 감사하겠습니다 ! 부탁드려요 !

 

답변 1

답변을 작성해보세요.

0

collection.estimated_document_count

쿼리 필터를 사용하지 않고 메타데이터를 사용하여 컬렉션을 카운팅 합니다.

count_documents

쿼리 필터를 사용하여 컬렉션을 카운팅 합니다.

 

사전적 차이는 이정도로 보이는데 사실 위 2개의 함수의 큰 차이점은 샤딩된 클러스터의 환경에서 나타납니다.