본문 바로가기

mongoDB

[mongoose] _v 필드 생성 이유 및 제거하기

반응형

갑자기 mongoDB에 새로운 db를 연결해서 데이터를 넣었는데 갑자기 처음본 _v 필드가 나왔다. 

 

모델 스키마에 존재하지 않는데 왜지 ??? 찾다가 versionKey 값을 넣어주면 되었다. 

 

해결 : 모델 스키마 두 번째 인자값 옵션에 versionKey: false를 작성해주기 

 

 

const addressSchema: Schema<IAddress> = new Schema<IAddress>(
    {
        // 지역
        region: String,
        // 시군구
        siGunGuName: String,
        // 읍면동
        eupMyeonDongName: String,
        // 연결된 주소 (pk)
        chainedAddress: String,
    },
    {
        timestamps: { createdAt: true, updatedAt: true },
        read: 'secondaryPreferred',
        versionKey: false,    // 이 부분 @ 
        typeKey: '$type',
    },
);

 

 

이렇게 하니 _v 없이 데이터가 잘 들어갔다. 

 

versionKey의 기능은 처음 Mongoose에 의해 도큐먼트가 생겼을 때 도큐먼트의 내부 revision을 담아 필드로 남기는 것이라고 한다. 해당 key의 디폴트 값이 _v 이어서 field에 _v key값으로 나왔던 것 이었다. 

 

 

 

 

Reference : https://stackoverflow.com/questions/12495891/what-is-the-v-field-in-mongoose

 

반응형