mongoose _id 예제

Mongoose는 Node.js에서 MongoDB를 다루는 강력한 ORM(Object-Relational Mapping) 라이브러리입니다. Mongoose를 사용하면 MongoDB의 _id 필드를 다루는 것이 매우 편리해집니다. 이번 예제에서는 Mongoose를 사용하여 MongoDB의 _id 필드를 다루는 방법에 대해 알아보겠습니다.

기본적인 _id 생성

Mongoose는 기본적으로 ObjectID 타입을 사용하여 _id 필드를 생성합니다. ObjectID는 MongoDB에서 각 문서를 구별하기 위해 자동으로 생성되는 고유한 식별자입니다. 아래의 코드는 Mongoose를 사용하여 새로운 문서를 생성하고, _id 필드를 확인하는 예제입니다.

const mongoose = require('mongoose');

// MongoDB 연결 설정
mongoose.connect('mongodb://localhost/myapp', { useNewUrlParser: true, useUnifiedTopology: true });

// 모델 정의
const Schema = mongoose.Schema;
const MyModelSchema = new Schema({
  name: String
});
const MyModel = mongoose.model('MyModel', MyModelSchema);

// 새로운 문서 생성
const newDoc = new MyModel({ name: 'John Doe' });

// _id 출력
console.log(newDoc._id);

사용자 정의 _id

만약 사용자 정의 _id 필드를 사용하고자 한다면, Mongoose 스키마에서 _id: false로 설정한 후 원하는 필드 이름과 타입을 지정할 수 있습니다. 아래의 코드는 Mongoose를 사용하여 사용자 정의 _id 필드를 생성하고, 저장하는 예제입니다.

const mongoose = require('mongoose');

// MongoDB 연결 설정
mongoose.connect('mongodb://localhost/myapp', { useNewUrlParser: true, useUnifiedTopology: true });

// 모델 정의
const Schema = mongoose.Schema;
const MyModelSchema = new Schema({
  _id: { type: String, required: true }, // 사용자 정의 _id 필드
  name: String
}, { _id: false }); // _id 필드 비활성화
const MyModel = mongoose.model('MyModel', MyModelSchema);

// 새로운 문서 생성
const newDoc = new MyModel({ _id: '123', name: 'John Doe' });

// 문서 저장
newDoc.save((err, savedDoc) => {
  if (err) {
    console.error(err);
  } else {
    console.log(savedDoc);
  }
});

위의 예제에서는 _id: { type: String, required: true }로 사용자 정의 _id 필드를 선언하고, 스키마 옵션으로 _id: false를 설정하여 기본 _id 필드를 비활성화합니다. 이후 newDoc.save()를 호출하여 문서를 저장하면, 지정한 사용자 정의 _id가 저장됩니다.

Mongoose를 사용하여 _id 필드를 다루는 방법에 대해 알아보았습니다. Mongoose를 통해 MongoDB 문서를 다룰 때 _id 필드를 사용자 정의하거나 ObjectID를 자동으로 생성하여 사용할 수 있습니다.

#mongodb #mongoose #nodejs