티스토리 뷰

개인 공부를 위하여 몽고디비 공식문서를 한글로 번역한 글입니다.

 

> 단일 도큐먼트 삽입

db.collection.insertOne() // 컬렉션에 단일 도큐먼트를 삽입한다

다음 예시는 inventory 컬렉션에 새 도큐먼트를 삽입한다. 도큐먼트가 _id 필드를 명시하지 않는다면, 몽고디비가 새 도큐먼트에 _id 필드를 ObjectId값으로 추가해준다.

db.inventory.insertOne(
	{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)

insertOne()은 새로 삽입된 도큐먼트의 _id 필드 값을 포함하는 도큐먼트를 반환한다. 

{
	"acknowledged": true,
	"insertedId": ObjectId("5d78b85253767d2b67b07d68")
}

 

> 다중 도큐먼트 삽입

db.collection.insertMany() // 컬렉션에 여러 도큐먼트를 삽입. 메서드에 도큐먼트들의 배열을 전달한다.

다음 예시는 inventory 컬렉션에 세 개의 새 도큐먼트들을 삽입한다. 도큐먼트들이 _id 필드를 명시하지 않는다면, 몽고디비가 각 도큐먼트에 _id 필드를 ObjectId 값으로 추가해준다.

db.inventory.insertMany([
	{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
	{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
	{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])

insertMany()는 새로 삽입된 도큐먼트들의 _id 필드 값을 포함하는 도큐먼트를 반환한다.

{
	"acknowledged": true,
	"insertedIds": [
		ObjectId("5d78bc9d60ce9043b04f3ba0"),
		ObjectId("5d78bc9d60ce9043b04f3ba1"),
		ObjectId("5d78bc9d60ce9043b04f3ba2")
	]
}

 

 

> 삽입 동작

  •  컬렉션 생성
    • 현재 해당 컬렉션이 존재하지 않는다면, 삽입 작업은 컬렉션을 생성할 것이다.
  •  _id 필드
    • 몽고디비에서, 컬렉션에 저장된 각 도큐먼트는 유일한 primary key 역할을 하는 _id 필드를 필요로 한다. 삽입된 도큐먼트가 _id 필드가 생략되었다면, 몽고디비 드라이버가 자동으로 _id 필드를 위해 ObjectId를 생성해준다.
    • 이는 upsert: true를 이용한 업데이트 작업을 통하여 삽입된 도큐먼트들에게도 또한 적용된다.
  • 원자성
    • 몽고디비에서 모든 쓰기 작업들은 단일 도큐먼트 레벨에서 원자적이다.

 

728x90
댓글