본문 바로가기
데이터베이스/MongoDB

[MongoDB] Create관련, 차이점

by minhyeok.lee 2023. 2. 27.
반응형

db.collection.insertOne(), db.collection.insertMany(), db.collection.bulkWrite()

 

Create관련

MongoDB: db.collection.insert(): 지원중지, db.collection.save(): 지원중지, db.collection.insertOne(), db.collection.insertMany(), db.collection.bulkWrite()

 

1. db.collection.insertOne()

InsertOne은 컬렉션에 단일 문서를 삽입하기 위해 삽입 명령을 실행한다.

문서 매개변수는 삽입할 문서여야 하고 0일 수 없다.

문서가 BSON으로 변환될 때 _id 필드가 없으면 마샬링된 문서에 자동으로 추가된다. (원본 문서는 수정되지 않는다.)

반환된 InsertOneResult의 InsertedID 필드에서 _id를 검색할 수 있다.

 

2. db.collection.insertMany()

InsertMany는 삽입 명령을 실행하여 컬렉션에 여러 문서를 삽입한다.

작업 중 쓰기 오류(예: 중복 키 오류)가 발생하면 이 메서드는 BulkWriteException 오류를 반환한다.

문서 매개변수는 삽입할 문서 조각이어야 한다.

슬라이스는 0이거나 비어 있을 수 없다.

요소는 모두 0이 아니어야 한다.

BSON으로 변환될 때 _id 필드가 없는 문서의 경우 마샬링된 문서에 자동으로 하나가 추가된다. (원본 문서는 수정되지 않는다.)

삽입된 문서의 _id 값은 반환된 InsertManyResult의 InsertedIDs 필드에서 검색할 수 있다.

 

3. db.collection.bulkWrite()

MongoDB가 클라이언트에게 제공하는 대량으로 쓰기 작업을 수행할 수 있는 기능이다.

대량 쓰기 작업은 단일 컬렉션에 영향을 미친다.

MongoDB를 사용하면 응용 프로그램이 대량 쓰기 작업에 필요한 허용 가능한 수준의 승인을 결정할 수 있다.
db.collection.bulkWrite() 메서드는 대량 삽입, 업데이트 및 삭제 작업을 수행할 수 있는 기능을 제공한다.
몽고DB는 db.collection.insertMany() 메서드를 통해 대량 삽입을 지원한다.

 

순서가 지정된 작업과 순서가 지정되지 않은 작업
대량 쓰기 작업은 순서가 지정되거나 순서가 지정되지 않을 수 있다.
순서가 지정된 작업 목록을 사용하여 MongoDB는 작업을 순차적으로 실행한다.

쓰기 작업 중 하나를 처리하는 동안 오류가 발생하면 MongoDB는 목록에 남아 있는 쓰기 작업을 처리하지 않고 반환된다.

 

ordered 대량 쓰기

정렬되지 않은 작업 목록을 사용하여 MongoDB는 작업을 병렬로 실행할 수 있지만 이 동작은 보장되지 않는다.

쓰기 작업 중 하나를 처리하는 동안 오류가 발생하면 MongoDB는 목록의 나머지 쓰기 작업을 계속 처리한다.

 

분할된 컬렉션에서 순서가 지정된 작업 목록을 실행하는 것은 일반적으로 순서가 지정되지 않은 작업을 실행하는 것보다 느리다.

순서가 지정된 목록에서는 각 작업이 완료될 때까지 기다려야 하기 때문이다.

 

기본적으로 bulkWrite()는 순서가 지정된 작업을 수행한다.

순서 없는 쓰기 작업을 지정하려면 옵션 문서에서 ordered: false를 설정한다.

 

 

차이점

db.collection.insertOne(): 컬렉션에 단일 문서를 삽입할 때 사용한다.

db.collection.insertMany():  컬렉션에 한 번에 여러 문서삽입할 때 사용한다.

db.collection.bulkWrite(): 대량으로 쓰기(주로 문서 하나 삽입, 수정, 삭제) 작업을 수행할 때 사용한다.

반응형

댓글