몽고디비 mongoDB
연산자
연산자 | 설명 |
---|---|
$set | 도큐먼트의 속성값을 변경 |
$unset | 도큐먼트의 속성을 삭제 |
$rename | 도큐먼트의 속성 이름 변경 |
$inc | 필드 값 증가 |
$mul | 필드 값에 곱하기 |
$min | 지정한 값과 현재의 값 중 작은 값 선택 |
$max | 지정한 값과 현재의 값 중 큰 값 선택 |
$currentDate | 현재 날짜와 시간을 필드에 업데이트 |
$addToSet | 배열 필드가 아직 없는 경우 해당 필드에 값 추가 |
$pop | 배열 필드에서 첫 번째 혹은 마지막 값을 삭제 |
$pull | 배열 필드에서 모든 값을 삭제 |
$push | 배열 필드의 끝에 값을 추가 |
$each | 여러 개의 값을 추가해 배열 필드 수정 |
스키마 생성 시 선언 가능한 타입
타입 | 설명과 예시 |
---|---|
String | 속성을 문자열로 선언 const schema = new Schema({ name: String }) |
Number | 속성을 숫자로 선언 const schema = new Schema({ age: Number} ) |
Date | 속성을 날짜 타입으로 선언 |
Buffer | 속성을 버퍼로 선언 const schema = new Schema({ binData: Buffer }) |
Boolean | 속성을 부울로 선언 const schema = new Schema({ b: Boolean}) |
Mixed | 무엇이든 가능한 타입 const schema = new Schema({ any: {} }) |
ObjectId | 몽고디비에서 고유한 식별자로 사용 const schema = new Schema({name: String}) |
Array | 배열은 [] 기호를 사용해 선언 const schema = new Schema({name: [String]}) 다른 문서를 배열의 값으로 사용할 수도 있다. const address = new Schema({ addr: String }); const addresses = new Schema( addrs: [address]); |
Decimal128 | 128비트 10빈수 부동소수점을 사용 시에 선언 const f = new Schema({ f: Decimal128 }) |
Map | 자바스크립트 Map의 하위 클래스인 MongooseMap 타입으로 선언할 수 있다. const site = new Schema({ url: { type: Map, of: String } }); |
Schema | 특정 스키마 타입으로 타입을 선언할 수 있다. const subSchema = new Schema({ // 스키마 선언 }); const schema = new Schema({ data: { type: subSchema, default: {} } }); |
스키마 생성 시 추가 속성
속성 | 타입 | 설명 및 예시 |
---|---|---|
required | boolean or function | 해당 속성이 필수인지 여부 email: { type: String, required: true } |
default | Any or function | 기본값 설정, 함수인 경우 함수의 반환값 email: { type: String, default: ‘no email’ } |
select | boolean | 쿼리 수행 시 기본적으로 선택되는 값인지 여부 email: { type: String, select: true } |
validate | function | 유효성 검증 함수 추가가능 email: { type: String, validate: () => { return this.email.indexOf(‘@’) > 0; }} |
get | function | 커스텀 get 함수 설정 name: { type: Stirng, get: v => v.toLowerCase() } |
set | function | 커스텀 set 함수 설정 name: { type: String, set: v => v.toUpperCase() } |
alias | String | 속성으로 이루어진 이름이 아닌 별칭 사용 시 사용 name: { type: String, alias: ‘n’ } |
immutable | boolean | true로 설정 시 값을 변경할 수 없음 age: { type: Number, immutable: true } |
transform | function | Document#toJSON()을 호출하면 transform에 지정된 함수 실행, JSON.stringify() 시에도 실행 name: { type: String, transform: v => v.toLowerCase() } |
index | boolean | 해당 속성에 인덱스를 정의한지 여부 name: { type: String, index: true } |
unique | boolean | 해당 속성에 유니크 인덱스를 정의할지 여부 name: { type: String, unique: true } |
sparse | boolean | 해당 속성에 희소 인덱스를 정의할지 여부 name: { type: String, sparse: true } |
독자 의견
저자 @lime1st 에게 의견 남기기: