본문 바로가기
Infra/MongoDB

MongoDB - (2) - CRUD와 데이터타입

by Inventer 2023. 4. 18.
//.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

댓글