5.2 explain 출력 쿼리에 대한 많은 정보를 제공, 느린 쿼리를 위한 중요한 진단 도구 어떤 인덱스가 어떻게 사용되는지 알 수 있음 쿼리 마지막에 explain 호출 추가 쿼리가 "COLLSCAN"을 사용하면 인덱스를 사용하지 않음 "needYields" : 쓰기 요청을 처리하도록 쿼리가 양보(일시정지)한 횟수 대기 중인 쓰기가 있다면 쿼리는 일시적으로 락을 해제하고 쓰기 처리 "indexBounds" : 인덱스가 어떻게 사용됐는지 설명하며 탐색한 인덱스의 범위를 제공 {"username": 1, "age":1}, {"age":1, "username":1} 인덱스 존재 시 쿼리마다 사용 인덱스 상이 > db.users.find({"age":{>:10}, "username":"user2134"}..
5.1 인덱싱 소개 인덱스를 사용하지 않는 쿼리를 컬렉션 스캔이라 함 explain 커서 메서드는 CRUD 작업의 실행 정보 제공 executionStats 모드는 인덱스를 이용한 쿼리의 효과를 이해하는 데 도움 totalDocsExamined : 쿼리를 실행하면서 살펴본 도큐먼트 개수 totalKeysExamined : 결과 셋을 생성하기 위해 인덱스 내에서 몇 개의 키를 통과했는지 nReturned : 반환받은 결과의 개수 쿼리 패턴 : 애플리케이션이 데이터베이스에 요구하는 다양한 유형의 질문 > db.users.find({"username" : "user101"}).explain("executionStats") { "queryPlanner" : { ... }, "executionStats" : { ..
4.1 find 첫 매개변수에 가져올 도큐먼트를 결정 쿼리 도큐먼트에 키/값 쌍을 추가해 검색을 제한 여러 개의 키/값 쌍은 '조건1 AND 조건2 AND...' > db.c.find()//빈 쿼리 도큐먼트는 컬렉션 전체 조회 > db.c.find({})//동일 > db.users.find({"username" : "joe"})//문자열형이 일치하는 도큐먼트 조회 > db.users.find({"username" : "joe", "age" : 27}) 4.1.1 반환받을 키 지정 두 번째 매개변수에 반환받을 키를 지정 네트워상의 데이터 전송량과 클라이언트 측에서 디코딩하는 데 시간, 메모리 절약 "_id" 키는 지정하지 않아도 항상 반환, 제외도 가능 > db.users.find({}, {"usernam..
3.1 도큐먼트 삽입 insertOne 메서드 사용 > db.movies.insertOne({"title" : "StarWars"}) 3.1.1 insertMany 각 도큐먼트에 대해 데이터베이스로 왕복하지 않고 bulk insert 처리 단일 컬렉션에 삽입할 때 유용 48mbyte 크기씩 분할 삽입 두번째 매개변수로 옵션 도큐먼트 지정 "ordered" : true (default) 정렬된 삽입, 오류발생하면 이후 삽입 X "ordered" : false 정렬되지 않은 삽입, 오류발생 관계없이 모두 삽입 시도 3.1.2 삽입 유효성 검사 "_id" 필드가 없으면 새로 추가 모든 도큐먼트는 16mbyte 크기 제한 3.1.3 삽입 insertOne, insertMany 3.2 도큐먼트 삭제 deleteO..
1.1 손쉬운 사용 도큐먼트 지향 데이터베이스 키와 값을 미리 정의하지 않고 고정된 스키마가 없음 1.2 확장 가능한 설계 분산 확장을 염두하여 설계 데이터를 여러 서버에 쉽게 분산 1.3 다양한 기능 인덱싱 집계 특수한 컬렉션 유형 파일 스토리지 1.4 고성능 동시성과 처리량을 극대화하기 위해 WiredTiger Storage engine에 기회적 락(Opportunistic Locking)을 사용 캐시처럼 제한된 용량의 램으로 쿼리에 알맞은 인덱스를 자동 선택 1.5 몽고DB 철학 확장성이 높으며 유연하고 빠른, 완전한 기능을 갖춘 데이터 스토리지를 만드는 일