//.mongorc.js
var comliment = ["attractive, "intelligent", "like Batman"];
var index = Math.floor(Math.random()*3);
print("Hello, you're looking particularly " +compliment[index]+ " today!");
var no = function() {
print("Not on my watch.");
};
//데이터베이스 삭제 방지
db.dropDatabase = DB.prototype.dropDatabase = no;
//컬렉션 삭제 방지
DBCollection.prototype.drop = no;
//인덱스 삭제 방지
DBCollection.prototype.dropIndex = no;
//인덱스 삭제 방지
DBCollection.prototype.dropIndexes = no;
특징
- 자바스크립트 라이브러리의 모든 기능을 활용할 수 있다.
- 자바스크립트 함수를 정의하고 호출할 수 있다.
CRUD
생성 | 읽기 | 갱신 | 삭제 | |
함수 | insertOne() | find() findOne() |
updateOne() | deleteOne() deleteMany() |
데이터형
- JSON에서 지원하는 타입 + 날짜 지원 + 정규식 지원 + 부동소수점형과 정수형 구분
- 아래는 일반적으로 지원하는 데이터타입이다.
데이터타입 명시 | 예시 |
Null | {"x" : null} |
Boolean | {"x" : true} |
Number(8Byte 부동소수점 - 기본) | {"x" : 3.14} {"x" : 3} |
Number(4, 8Byte를 갖는 정수형) | {"x" : NumberInt("3")} {"x" : NumberLong("3")} |
String (UTF-8 기준) | {"x" - "foobar"} |
Date (표준 시간대 없고, 유닉스 타임 사용) | {"x" : new Date()} |
RegExp | {"x" : /foobar/i} |
Array | {"x" : ["a","b","c"]} |
Document | {"x" : {"foo" : "bar"}} |
Object ID | {"x" : ObjectId()} |
Binary Data | 셸에서 조작불가 |
Code(JS code 포함 가능) | {"x" : function() { /* ... */ }} |
날짜
- JS의 작동방식을 따르기 때문에 Date()가 아닌 new Date() 생성자 방식에 주의할 것
배열
- 리스트, 스택, 큐와 같은 정렬연산과 SET와 같은 비정렬 연산에 호환가능
- 서로 다른 데이터형 저장 가능
- 중첩 배열 가능
{"things" : ["pie", 3.14]}
위 처럼 데이터를 가지면 아래와 같은 것이 가능함.
- 배열의 내용을 통해 인덱스를 만들 수 있음
- 3.14가 things의 요소로 있는 모든 도큐먼트를 쿼리할 수 있음
- things에 인덱스를 생성해 쿼리 속도를 향상 시킬 수 있음
내장 도큐먼트
{
"name" : "John Doe",
"address" : {
"street" : "123 Park Street",
"city" : "AnyTonw",
"state" : "NY"
}
}
_id와 ObjectId
- "_id"라는 key의 value는 어떤 데이터형이라도 상관없음
- 근데 ObjectId가 기본임.
- 모든 도큐먼트는 고유한 _id 값을 갖고 이를 식별자로서 활용함
- 도큐먼트를 구분하는 단위임.
ObjectId
- MongoDB의 분산 특성 때문에 생김
- 샤딩 환경에서 고유 식별자를 생성하는 것이 중요했음
- 12Byte의 크기
- 24자리 16진수를 가짐
.mongorc.js
- 셸이 시작할 때마다 실행되는 스크립트를 .mongorc.js 파일에 넣을 수 있다.
- dropDatabase 와 같은 함수가 아무것도 수행하지 않도록 재정의할 수 있다.
- 셸을 시작할 때마다 문구를 변경할 수 있다.
'Infra > MongoDB' 카테고리의 다른 글
MongoDB - (6) - 인덱싱2 (0) | 2023.04.22 |
---|---|
MongoDB - (5) - 인덱싱 (0) | 2023.04.21 |
MongoDB - (4) - 쿼리 (0) | 2023.04.20 |
MongoDB - (3) - CRUD 실습 (0) | 2023.04.19 |
MongoDB - (1) - MongoDB 소개 (0) | 2023.04.18 |
댓글