mongoDB 데이터 입력/수정/검색/삭제 (CRUD)
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
4. mongoDB 데이터 입력/수정/검색/삭제 (CRUD)¶
4.1. Document 입력 - insertOne, insertMany¶
- insertOne : 한개의 document 생성
- insertMany : list of document 생성
Document 입력 문법¶
SQL INSERT 문법과 비교¶
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
- insertOne 예제
db.articles.insertOne( { subject: "coffee", author: "xyz", views: 50 } )
- insertMany 예제
db.articles.insertMany( [ { subject: "coffee", author: "xyz", views: 50 }, { subject: "Coffee Shopping", author: "efg", views: 5 }, { subject: "Baking a cake", author: "abc", views: 90 }, { subject: "baking", author: "xyz", views: 100 }, { subject: "Café Con Leche", author: "abc", views: 200 }, { subject: "Сырники", author: "jkl", views: 80 }, { subject: "coffee and cream", author: "efg", views: 10 }, { subject: "Cafe con Leche", author: "xyz", views: 10 }, { subject: "coffees", author: "xyz", views: 10 }, { subject: "coffee1", author: "xyz", views: 10 } ] )
실습
1. employees Collection 생성 {capped:true, size:100000} Capped Collection, size는 100000 으로 생성
2. 다음 Document 데이터 넣기
- user_id 가 bcd001, age 가 45, status 가 A 인 Document
- user_id 가 bcd002, age 가 25, status 가 B 인 Document
- user_id 가 bcd003, age 가 50, status 가 A 인 Document
- user_id 가 bcd004, age 가 35, status 가 A 인 Document
- user_id 가 abc001, age 가 28, status 가 B 인 Document
1. employees Collection 생성 {capped:true, size:100000} Capped Collection, size는 100000 으로 생성
2. 다음 Document 데이터 넣기
- user_id 가 bcd001, age 가 45, status 가 A 인 Document
- user_id 가 bcd002, age 가 25, status 가 B 인 Document
- user_id 가 bcd003, age 가 50, status 가 A 인 Document
- user_id 가 bcd004, age 가 35, status 가 A 인 Document
- user_id 가 abc001, age 가 28, status 가 B 인 Document
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
4.2. Document 읽기(검색) - findOne, find¶
- findOne : 매칭되는 한개의 document 검색
- find : 매칭되는 list of document 검색
Document 읽기(검색) 문법¶
- find()/findOne 명령과 - SQL 문 비교
db.people.find() - SELECT * FROM people db.people.find({ }, { user_id: 1, status: 1 }) - SELECT _id, user_id, status FROM people db.people.find({ },{ user_id: 1, status: 1, _id: 0 }) - SELECT user_id, status FROM people db.people.find({ status: "A" }) - SELECT * FROM people WHERE status = "A" db.people.find({ status: "A", age: 50 }) - SELECT * FROM people WHERE status = "A" AND age = 50 db.people.find({ $or: [ { status: "A" } , { age: 50 } ] }) - SELECT * FROM people WHERE status = "A" OR age = 50
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
실습
1. employees Collection 에서 user_id 가 bcd002 인 Document의 user_id, age, status, _id 출력
2. employees Collection 에서 user_id 가 bcd003 인 Document의 user_id, age, status 출력
3. employees Collection 에서 user_id 가 bcd004 이거나, age가 28인 Document 의 모든 필드 출력
1. employees Collection 에서 user_id 가 bcd002 인 Document의 user_id, age, status, _id 출력
2. employees Collection 에서 user_id 가 bcd003 인 Document의 user_id, age, status 출력
3. employees Collection 에서 user_id 가 bcd004 이거나, age가 28인 Document 의 모든 필드 출력
비교 문법¶
$eq = Matches values that are equal to a specified value. $gt > Matches values that are greater than a specified value. $gte >= Matches values that are greater than or equal to a specified value. $in Matches any of the values specified in an array. $lt < Matches values that are less than a specified value. $lte <= Matches values that are less than or equal to a specified value. $ne != Matches all values that are not equal to a specified value. $nin Matches none of the values specified in an array.
비교 문법 코드 예제¶
db.people.find({ age: { $gt: 25 } }) - SELECT * FROM people WHERE age > 25 db.people.find({ age: { $lt: 25 } }) - SELECT * FROM people WHERE age < 25 db.people.find({ age: { $gt: 25, $lte: 50 } }) - SELECT * FROM people WHERE age > 25 AND age <= 50 db.people.find( { user_id: /bc/ } ) db.people.find( { user_id: { $regex: /bc/ } } ) - SELECT * FROM people WHERE user_id like "%bc%" db.people.find( { user_id: /^bc/ } ) db.people.find( { user_id: { $regex: /^bc/ } } ) - SELECT * FROM people WHERE user_id like "bc%" db.people.find( { status: "A" } ).sort( { user_id: 1 } ) - SELECT * FROM people WHERE status = "A" ORDER BY user_id ASC db.people.find( { status: "A" } ).sort( { user_id: -1 } ) - SELECT * FROM people WHERE status = "A" ORDER BY user_id DESC db.people.count() db.people.find().count() - SELECT COUNT(*) FROM people db.people.count( { user_id: { $exists: true } } ) db.people.find( { user_id: { $exists: true } } ).count() - SELECT COUNT(user_id) FROM people db.people.count( { age: { $gt: 30 } } ) db.people.find( { age: { $gt: 30 } } ).count() - SELECT COUNT(*) FROM people WHERE age > 30 db.people.distinct( "status" ) - SELECT DISTINCT(status) FROM people db.people.findOne() db.people.find().limit(1) - SELECT * FROM people LIMIT 1
실습
1. 다음 Document 데이터 넣기
- age 가 20 보다 큰 Document 의 user_id 만 출력하기
- age 가 50 이고 status 가 A 인 Document 의 user_id 만 출력하기
- age 가 60 보다 작은 Document 의 user_id 와 age 출력하기
- user_id 종류 출력하기
- user_id 가 bcd 로 시작하는 전체 Document 출력하기
1. 다음 Document 데이터 넣기
- age 가 20 보다 큰 Document 의 user_id 만 출력하기
- age 가 50 이고 status 가 A 인 Document 의 user_id 만 출력하기
- age 가 60 보다 작은 Document 의 user_id 와 age 출력하기
- user_id 종류 출력하기
- user_id 가 bcd 로 시작하는 전체 Document 출력하기
Document 수정 - updateOne, updateMany¶
- updateOne - 매칭되는 한개의 document 업데이트
- updateMany - 매칭되는 list of document 업데이트
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
4.3. Document 수정 문법¶
Document 수정 코드 예제¶
- db.people.updateMany( { age: { $gt: 25 } }, { $set: { status: "C" } } ) - SQL 변환하면, - UPDATE people SET status = "C" WHERE age > 25 - 한 Document만 수정하려면 updateOne을 사용함 - db.people.updateOne( { age: { $gt: 25 } }, { $set: { status: "C" } } ) - db.people.updateMany( { status: "A" } , { $inc: { age: 3 } } ) - SQL 변환하면, - UPDATE people SET age = age + 3 WHERE status = "A"
실습
1. 다음 Document 데이터 수정하기
- age 가 40 보다 큰 Document 의 status 를 B 로 변환하기
1. 다음 Document 데이터 수정하기
- age 가 40 보다 큰 Document 의 status 를 B 로 변환하기
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
4.4. Document 삭제 - removeOne, removeMany¶
- removeOne - 매칭되는 한개의 document 삭제
- removeMany - 매칭되는 list of document 삭제
Document 삭제 문법¶
- db.people.deleteMany( { status: "D" } )
- SQL로 변환하면,
- DELETE FROM people WHERE status = "D"
- db.people.deleteMany({})
- SQL로 변환하면,
- DELETE FROM people
실습
1. 다음 Document 데이터 삭제하기
- age 가 30 보다 작은 Document 삭제하기
1. 다음 Document 데이터 삭제하기
- age 가 30 보다 작은 Document 삭제하기
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
참고: mongo shell¶
- 로컬에서 서버가 돌아갈 경우,
- mongo
- 원격 서버에 접속할 경우
- mongo --host 'host_address' --port 'port'
- 예) mongo --host 192.10.21.3 --port 27017