티스토리 뷰

Backend/꾸준히 TIL

[mongodb/mongoose] __v 필드

개발하는 후딘 2022. 8. 31. 15:16
728x90
반응형

[참고자료]

 

What is the "__v" field in Mongoose

I'm using Mongoose version 3 with MongoDB version 2.2. I've noticed a __v field has started appearing in my MongoDB documents. Is it something to do with versioning? How is it used?

stackoverflow.com

 

 

Mongoose v6.5.4: Schemas

If you haven't yet done so, please take a minute to read the quickstart to get an idea of how Mongoose works. If you are migrating from 5.x to 6.x please take a moment to read the migration guide. Everything in Mongoose starts with a Schema. Each schema ma

mongoosejs.com


 

__v 필드 는 versionKey 를 의미합니다.

해당 다큐먼트의 버젼을 나타냅니다.

모든 다큐먼트에 _id가 있듯 __v 필드도 다큐먼트 생성할때 자동으로 만들어집니다.

__v 필드의 기본값은 0 입니다.

versionKey 는 몽구스로부터 처음으로 만들어진 각 다큐먼트의 프로퍼티 입니다.

versionKey 옵션은 버젼을 나타내기 위한 문자열 입니다.

 

 

다큐먼트의 버젼을 나타내는 __v 필드를 사용하지 않다면

되도록이면 __v 필드와 버젼을 나타내는 작업을 더이상 하지 않는 경우가 아니라면 disable을 시키지 않는게 좋습니다.

즉, __v 필드로 버젼을 나타내도록 그대로 두는게 좋습니다.

 

그럼에도 버젼을 나타내는것을 그만두고 싶다면

versionKey 옵션에 false 를 표기하면 됩니다.

new Schema({ ... }, { versionKey: false });

const Thing = mongoose.model("Thing", schema);
const thing = new Thing({ name: 'no versioning please' });
thing.save();

 

mongoose는 save() 를 호출할 때마다 __v(versionKey) 를 업데이트 합니다.

update(), findOneAndUpdate() 를 호출할 경우에는 __v(versionKey) 를 업데이트 하지 않습니다.

728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함