less than 1 minute read

Mongodb 를 사용하면서 오타에 관련된 주의 할점은 오타에 대한 대비책이 전혀없다는것.

예를들어 “$natural” 로 타이핑 해야하는데 실수로 “$” 를 빼고 정렬을 수행하면 검색된 데이터를 모두 정렬하게 된다.

즉, 일단 모든 도큐먼트를 메모리로 읽어서 퀵소트 알고리즘으로 정렬하는데 사실은 natural 이라는 실제 컬렉션에는 존재하지않는

필드가 되는것이다.

그뿐만이 아니라 존재하지 않는 필드를 정렬 조건 또는 검색 조건에 사용하는것도 컬렉션 풀 스캔을 유도할 가능성이 크다.

mongodb 는 컬렉션에 대해 정해진 스키마 정보가 없기때문에 어떤 컬렉션이 어떤 필드를 가졌는지에 대한 메타 정보가 없다.

그래서 사용자가 어떤 필드의 이름으로 조건으로 사용하면 모든 도큐먼트를 읽어봐야 그 필드가 있는지 알수있다.

즉 Mongodb 서버에선 SQL 에서 수행하는 시맨믹 체크가 불가능하다.

출처: Real mongodb

Categories:

Updated: