728x90
반응형
Database
생성 : use
🔖 use DATABASE_NAME
- Database 생성 명령어
- 생성 후, 생성된 데이터베이스 사용
- 데이터베이스가 이미 존재하는 경우엔 현존하는 데이터베이스 사용
> use mongodb_tutorial
switched to db mongodb_tutorial
제거 : dropDatabase()
🔖 db.dropDatabase()
- Database 제거
- 명령어 사용 전, use 명령어로 삭제하고자 하는 데이터베이스 선택
> use mongodb_tutorial
switched to db mongodb_tutorial
> db.dropDatabase();
{ "dropped" : "mongodb_tutorial", "ok" : 1 }
db
- 현재 사용중인 데이터베이스 확인
> db
mongodb_tutorial
stats()
- 현재 사용하고 있는 데이터베이스 정보 출력
show dbs
- 생성된 데이터베이스 리스트 목록 확인
💡 리스트에서 데이터베이스를 확인하려면 최소 한개의 Document를 추가해야 함
> show dbs
local 0.000GB
Collection
생성 : createCollection()
🔖 db.createCollection(name, [option])
- Collection 생성
- option : document 타입으로 구성된 해당 컬렉션의 설정Field Type 설명
capped Boolean true 설정 시, capped collection 활성화 Capped collection 이란, 고정된 크기(fixed size) 를 가진 컬렉션size 가 초과되면 가장 오래된 데이터를 덮어씀, size값 설정 필수 autoIndex Boolean true 설정 시, _id 필드에 index 자동 생성 기본값 : false size number 해당 컬렉션의 최대 사이즈(maximum size) 지정 (단위 : byte) max number 해당 컬렉션에 추가 할 수 있는 최대 document 갯수
> db.createCollection("articles", {
... capped: true,
... autoIndex: true,
... size: 6142800,
... max: 10000
... })
{ "ok" : 1 }
show collections
- 생성된 collection 리스트 확인
- collection 조회
제거 : drop()
🔖 db.COLLECTION_NAME.drop()
- Collection 제거
- 명령어 사용 전, use 명령어로 삭제하고자 하는 데이터베이스 선택
> use test
switched to db test
> show collections
articles
books
people
> db.people.drop()
true
> show collections
articles
books
Document
삽입 : insert()
<aside> 🔖 db.COLLECTION_NAME.insert(DOCUMENT_NAME)
- JSON 형식 document 입력 - 컬렉션이 존재하지 않을 경우 자동 생성 후 insert
- 1개
db.books.insert({"name": "NodeJS Guide", "author": "Velopert"}) WriteResult({ "nInserted" : 1 })
- 2개이상
> db.books.insert([ ... {"name": "Book1", "author": "Velopert"}, ... {"name": "Book2", "author": "Velopert"} ... ]); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
제거 : remove()
🔖 db.COLLECTION_NAME.remove({CRITERIA}, [justOne])
- Document 제거
- Parameter
parameter | type | 설명 |
*criteria | document | 삭제 할 데이터의 기준 값 (criteria) 입니다. 이 값이 { } 이면 컬렉션의 모든 데이터를 제거합니다. |
justOne | boolean | 선택적(Optional) 매개변수이며 이 값이 true 면 1개 의 다큐먼트만 제거합니다. 이 매개변수가 생략되면 기본값은 false 로 서, criteria에 해당되는 모든 다큐먼트를 제거합니다. |
> db.books.find({"name": "Book1"})
{ "_id" : ObjectId("56c097f94d6b67aafdeb88ac"), "name" : "Book1", "author" : "Velopert" }
> db.books.remove({"name": "Book1"})
WriteResult({ "nRemoved" : 1 })
> db.books.find()
{ "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), "name" : "MongoDB Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "name" : "NodeJS Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c097f94d6b67aafdeb88ad"), "name" : "Book2", "author" : "Velopert" }
DeleteOne(), DeleteMany()
🔖 db.COLLECTION_NAME.DeleteOne(field) db.COLLECTION_NAME.DeleteMany(field)
- deleteOne은 매칭되는 첫 번째 Document만 제거
- deleteMany는 매칭되는 모든 Document만 제거
수정 : update()
🔖 db.COLLECTION_NAME.update(field, $set: {field})
- 데이터 수정
- 기본적으로 하나의 쿼리만 수정
- ({field}, {$set: {change field}}) : 기존 doc를 change doc로 변경, $set을 해야 해당 필드만 변경.
⚠️ 만약 $set을 넣지 않을 경우 다큐먼트 내용이 다 지워지고 해당 객체로 통째로 대체
db.book.update({
name:"F"
}, {
$set: {
name:"F",
hits:20
}
}, {
upsert:true # upsert : 값이 없을 경우 insert 시행.
# update + insert의 합성어
})
# 만약 수정할 대상이 없다면 보통의 경우는 아무것도 변하지 않고 종료
# upsert옵션을 통해 삽입 가능
db.book.update({
hits:{$lte:30} // hits <= 30
}, {
$set:{
bestseller:"N"
}
},{
multi:true
})
# update는 기본적으로 하나의 행만 업데이트
# 따라서 여러 행을 업데이트 할 경우 {multi:true}로 설정
updateOne / updateMany / replaceOne
🔖 db.COLLECTION_NAME.updateOne(field, {change field}) db.COLLECTION_NAME.updateMany(field, {change field}) db.COLLECTION_NAME.replaceOne(change field)
- updateOne은 매칭되는 다큐먼트 중 첫 번째만 수정
- updateMany는 매칭되는 모든 다큐먼트를 수정. 기존 {multi:true} 옵션이 두 메소드로 나누어 진 것.
- replaceOne 메소드는 다큐먼트를 통째로 다른 것으로 대체. === $set을 안 썼을 때
findAndModify
🔖 db.COLLECTION_NAME.findAndModify(query, update, new)
- upsert(update + insert) + remove
옵션 | TYPE | 설 |
query | document | 대상을 찾는 법 |
update | document | 대상을 수정할 내용 |
new | boolean | 수정 이전의 다큐먼트를 반환할지, 수정 이후의 다큐먼트를 반환할 지 결정하는 부분. { new: true }를 넣으면 수정 이후의 다큐먼트를 반환 |
- 수정한 후에 수정된 결과를 다시 가져오고 싶다면 update 대신 findAndModify 메소드를 쓰는 게 좋음
db.monsters.findAndModify({
query: { name: 'Demon' },
update: { $set: { att: 150 } },
new: true
});
/*
1. query - name: 'Demon'인 것을
2. update - att: 150 로 내용을 수정
3. new : true - 수정 이후의 다큐먼트를 반환
*/
findOneAndUpdate / findOneAndReplace
🔖 db.COLLECTION_NAME.findOneAndUpdate(name, $set, returnNewDocument) db.COLLECTION_NAME.findOneAndReplace(name, $set, returnNewDocument)
- findAndModify는 update, upsert, remove를 모두 담당하는데, 이 기능을 쪼개서 하나의 역할만 전담하는 메소드 라 할 수있다.
- 역시나 findAndModify 처럼 수정 이전 또는 이후의 다큐먼트를 반환 받는데, 대신 new 옵션이 아니라 returnNewDocument로 이름이 바뀌었다.
db.monsters.findOneAndUpdate(
{ name: 'Demon' },
{ $set: { att: 150 } },
{ returnNewDocument: true }
);
반응형
'데이터베이스 > MongoDB' 카테고리의 다른 글
JSON & BSON (0) | 2024.04.01 |
---|---|
보안 설정 & 커넥션 생성 (0) | 2024.04.01 |
조회(find), query연산자 (0) | 2024.04.01 |
NoSQL (0) | 2024.04.01 |
설치 (0) | 2024.04.01 |