색인으로 이름을 사용하는 문서가 들어있는 거대한 mongoDB가 있습니다.MongoDB 개수와 정규식 검색 개수가 일치하지 않습니다.
기본적으로 48000 016 개 항목이 포함 된 텍스트 파일이 있습니다. (나는 카운트를 얻기 위해 wc -l을 사용한다)
OCR에서 추출한 이름 (많은 정크)과 다른 언어 (일본어, 러시아어 등).
내 MongoDB 테이블 통계에 내가 48 000 016을 사용한다고 표시됩니다.
나는이 정규식 사용 (표준 문자열 인) 이름의 항목을 조회 할 때문에 문제가 발생:
이/^([A-Z]|\W|\s|\d|_)/i
그래서 내 체크리스트 :
- 어떤 편지 - 을 확인을
- 대/소문자 구분 안 함 - 체크
- 숫자 - 확인
- 밑줄 - 확인
- \ W는 숫자, 문자 또는 밑줄이 아닌 문자입니다.
그래서이 정규식으로 문자열 값에 대해 데이터베이스를 쿼리하므로이 정규식에서 모든 것을 얻어야합니다. 그러나 문제는 5 개의 항목이 누락되었습니다.
쿼리 결과를 계산할 때 48 000 011 항목이 있습니다.
5 가지 아이디어가있을 수 있습니다. 내 문제의 본질 때문에 간단하게 커서를 사용하여 모든 항목을 살펴볼 수 있습니다. 그렇게 할 수는 있지만 모든 값을 검색 할 수있는 정규식이 필요합니다.
주석에 표시된대로 데이터베이스에서이 쿼리를 실행했습니다.
db.name.aggregate({$group:{_id:"uniqueDocs", count:{$sum:1}}})
결과는 다음과 같습니다
{ "result" : [ ], "ok" : 1 }
고마워요!
정규식을 반전하고 결과를 확인하는 방법은 어떻습니까? –
실행하여'db. .aggregate ({$ group : {_ id : "uniqueDocs", count : {$ sum : 1}}})'을 실행하여 [편집하여] //stackoverflow.com/posts/38559714/edit) –
'\ n \ r'을 정규 표현식에 포함 시키십시오. 업데이트 된 답변을 참조하십시오. –