튼튼발자 개발 성장기🏋️

[MongoDB] 도큐먼트 생성, 갱신, 삭제 본문

기타/MongoDB

[MongoDB] 도큐먼트 생성, 갱신, 삭제

시뻘건 튼튼발자 2025. 3. 6. 13:08
반응형

도큐먼트 생성

1. insertOne(): 하나의 도큐먼트 삽입

하나의 도큐먼트를 컬렉션에 삽입할 때 사용된다.

db.movies.insertOne({"title": "Stand by Me", "year": 1986});

위 예제는 movies 컬렉션에 title이 "Stand by Me"이고 year가 1986인 도큐먼트를 삽입한다.

 

2. insertMany(): 여러 도큐먼트 삽입

여러 개의 도큐먼트를 한 번에 삽입할 때 사용된다.

db.movies.insertMany([ {"title": "Stand by Me", "year": 1986}, {"title": "The Shawshank Redemption", "year": 1994}, {"title": "Forrest Gump", "year": 1994} ]);

위 예제는 movies 컬렉션에 세 개의 도큐먼트를 삽입한다.

 

도큐먼트 갱신

1. updateOne(): 하나의 도큐먼트 갱신(수정)

 

 

updateOne()은 하나의 도큐먼트를 수정한다.

db.movies.updateOne( { "title": "Stand by Me" }, { $set: { "year": 1987 } } );

위 예제는 title이 "Stand by Me"인 도큐먼트의 year 값을 1987로 수정한다.

 

2. updateMany(): 여러 도큐먼트 갱신

updateMany()는 여러 도큐먼트를 수정한다.

db.movies.updateMany( { "year": 1994 }, { $set: { "director": "Frank Darabont" } } );

위 예제는 year가 1994인 모든 도큐먼트에 director 필드를 추가하거나 수정한다.

 

3. replaceOne(): 도큐먼트 교체

replaceOne()은 기존 도큐먼트를 완전히 새로운 도큐먼트로 교체한다.

db.movies.replaceOne( { "title": "Stand by Me" }, { "title": "Stand by Me", "year": 1986, "genre": "Drama" } );

위 예제는 title이 "Stand by Me"인 도큐먼트를 새로운 도큐먼트로 완전히 교체한다.

 

4. upsert: 존재하지 않으면 삽입, 있으면 수정

 

 

upsert는 update와 비슷하지만, 조건에 맞는 도큐먼트가 없으면 새로 삽입한다.

db.movies.updateOne( { "title": "The Green Mile" }, { $set: { "year": 1999, "genre": "Drama" } }, { upsert: true } );

위 예제는 title이 "The Green Mile"인 도큐먼트를 찾아서 수정하거나, 없으면 새로운 도큐먼트를 삽입한다.

 

5. findOneAndUpdate(): 도큐먼트 검색 후 수정 (MongoDB 5.0 이상)

findOneAndUpdate()는 조건에 맞는 도큐먼트를 하나 찾은 후, 주어진 업데이트 작업을 수행한다. 이 메소드는 도큐먼트를 부분적으로 수정할 때 사용된다. 주로 update 연산자(예: $set, $inc, $push 등)를 사용하여 도큐먼트의 일부 필드를 수정한다.

db.movies.findOneAndUpdate(
  { "title": "Stand by Me" },
  { $set: { "year": 1986 } }
);

위 예제는 title이 "Stand by Me"인 도큐먼트를 찾고, 그 도큐먼트의 year를 1986으로 수정한다. returnDocument: "after" 옵션은 수정된 후의 도큐먼트를 반환한다.

 

6. findOneAndReplace(): 도큐먼트 검색 후 교체 (MongoDB 5.0 이상)

findOneAndReplace()는 조건에 맞는 도큐먼트를 찾은 후, 전체 도큐먼트를 교체하는 방식이다. 이 메소드는 주어진 새로운 도큐먼트로 기존 도큐먼트를 완전히 교체한다. 기존 도큐먼트는 수정되지 않고, 새로운 도큐먼트로 덮어씌워진다.

db.movies.findOneAndReplace(
  { "title": "Stand by Me" },
  { "title": "Stand by Me", "year": 1986, "director": "Rob Reiner" }
);

위 예제는 title이 "Stand by Me"인 도큐먼트를 찾아, 전체 도큐먼트를 새로운 도큐먼트로 교체한다. 새 도큐먼트는 title, year, director 필드를 포함하고 있다.

 

 

 

도큐먼트 삭제

1. deleteOne(): 하나의 도큐먼트 삭제

deleteOne() 메소드는 조건에 맞는 도큐먼트를 하나만 삭제한다. 만약 여러 도큐먼트가 조건에 맞더라도, 첫 번째 도큐먼트만 삭제된다.

db.movies.deleteOne({ "title": "Stand by Me" });

위 예제는 title이 "Stand by Me"인 도큐먼트를 movies 컬렉션에서 하나만 삭제한다.

 

2. deleteMany(): 여러 도큐먼트 삭제

deleteMany() 메소드는 조건에 맞는 모든 도큐먼트를 삭제한다.

db.movies.deleteMany({ "year": 1994 });

위 예제는 year가 1994인 모든 도큐먼트를 movies 컬렉션에서 삭제한다.

 

3. findOneAndDelete(): 도큐먼트 검색 후 삭제 (MongoDB 5.0 이상)

MongoDB 5.0 이상에서는 findAndDelete() 메소드가 추가되었다다. 이 메소드는 조건에 맞는 도큐먼트를 찾고, 해당 도큐먼트를 삭제하며, 삭제된 도큐먼트를 반환한다.

db.movies.findOneAndDelete({ "title": "The Green Mile" });

위 예제는 title이 "The Green Mile"인 도큐먼트를 찾아 삭제하고, 삭제된 도큐먼트를 반환한다.

 

4. drop(): 컬렉션 삭제

drop() 메소드는 컬렉션 자체를 삭제한다. 컬렉션에 있는 모든 도큐먼트가 삭제되며, 컬렉션 자체도 제거된다.

db.movies.drop();

위 예제는 movies 컬렉션을 삭제한다. 컬렉션과 그 안에 있는 모든 도큐먼트가 삭제된다.

 

5. dropDatabase(): 데이터베이스 삭제

dropDatabase() 메소드는 현재 데이터베이스를 삭제한다. 이 메소드를 실행하면 해당 데이터베이스와 그 안에 포함된 모든 컬렉션, 도큐먼트가 삭제된다.

db.dropDatabase();

위 예제는 현재 사용 중인 데이터베이스를 삭제한다.

반응형

'기타 > MongoDB' 카테고리의 다른 글

[MongoDB] 특수 인덱스  (0) 2025.03.17
[MongoDB] 인덱싱 #2  (0) 2025.03.16
[MongoDB] 인덱싱 #1  (0) 2025.03.15
[MongoDB] MongoDB의 기본  (1) 2025.03.03
[MongoDB] MongoDB란?  (0) 2025.03.01