-
MongoDB 튜토리얼 2. CRUDDB/MongoDB 정리 2019. 9. 17. 11:01
검색
db.컬렉션이름.find()
검색 조건 역시 문서 형식으로 표현
','로 분류시 문서내의 키 값 쌍들은 and연산으로 처리 된다.
표현 : {<키> :{$eq: <값>}}
$eq, $lt, $lte, $gt, $gte, $ne
ex ) db.myCol.find({"age":{$eq:50}})
eq은 많이 쓰는 표현이므로 {<키>:<값>} 형식 가능
논리 연산자를 사용한 복합 조건 표현
// AND 연산
and 연산을 직접 쓸수도 있다
db.컬렉션.find({$and:[ <조건> , <조건2> ] })
db.mycol.find(
{
$and: [
{key1: value1}, {key2: value2}
]
}
).pretty();
즉 2가지 형태로 가능
db.myCol.find({"age":10, "grade":"A"});
db.myCol.find({$and: [ {"age":10}, {"grade" : "A"}] });
// OR 연산
db.컬렉션.find($or: [ <조건1>, <조건2> ] })
db.mycol.find({ $or: [{"by"":"tutorials point"}, { 어쩌구 }] });
섞일 경우
A and B ( B안에 or )
db.mycol.find("lies" : {$gt:10}, $or: [{"by" : "tutorials point"}, {"title": "MongoDB Overview"}]}).pretty();
10살 ~ 20살 사이
db.myCol.find({$and : [{"age" : {$git:10}}, {"age": {$lt:20}} ] });
축약 => db.myCol.find({"age":{$gt:10, $lt:20}})
db.myCol.find({"age": {$gt:10}, "age":{$lt:20}}) // 잘못된 표현 , 조건에 쓰인 필드가 같다. 이름이라 생각해보고 equal 로 생각해보자
name이 10이면서 20인것은 있을수가 없음
OR 역시 마찬가지
db.myCol.find({$or: [{"age" : 10}, {"grade" : "A"}] })
=> db.myCol.find({ $or : [{"age": 10}, {"age": 20}] })
db.myCol.find({"age" : {$in: [10,20]} }) // 도 가능
// AND OR 혼합
db.myCol.find({ "grade" : "A", $or : [{"age":10}, {"age":20}] });
집합 연산자를 사용한 복합 조건 표현
//$in 연산자
위에 참조
//$nin 연산자
db.myCol.find({"age" : {$nin: [10,20]} })
//$all 연산자 ( 단 , 필드 값이 배열인 경우만 유효하다)
db.myCol.find({"hobby" : {$all : ["soccer", "baseball"]} }) // 축구하고 야구가 취미힌 학생을 찾아라
// 기타 연산자
db.myCol.find({"age": {$exists:false}}) // age필드 없는 문서 검색
db.myCol.find({"age":null}) // age 필드 없는 문서 검색
db.myCol.find(("age": {$exists:true}}) // age 필드 있는 문서 검색
db.myCol.find({"age": {$ne:null}}) // age 필드 있는 문서 검색
프로젝션
db.컬렉션명.find(<조건>, <프로젝션>)
// select <프로젝션> from 컬렉션명 where <조건>
프로젝션은 문서필드 즉 = {필드명:값...}
"_id" 필드 표시하지 않으려면 ? :
db.myCol.find({"city" : "suwon"} , {"_id":0, "name":1}).pretty()
1을 넣으면 그 필드만 보겠다.
0을 넣으면 그 필드 빼고 다 보겠다.
조건이 없는경우
=>db.myCol.find({} ,, {"_id":0, "name":1}).pretty()
insert 하고 find 위주 다음주 시험
몽고DB는 업데이트시 문서 하나만 업데이트 한다.
여러 문서 업데이트시 multi를 붙여준다.
몽고DB overview가 여러개 나올시 여러개 다 바꿔주어라.
save 메소드는 기본적으로 대체 ( replace ) 이다.
단일 문서 수정
db.컬렉션명.update(<조건>, <수정내용>)
db.컬렉션명.updateOne(<조건>,<수정내용>)
<수정내용> ={ $set{필드명:값} }
> db.myCol.update( {"name": "kim"}, {$set:{"age":21}})
age 21없을시 넣어준다.
name 없을시 오류
복수 문서 수정
db.컬렉션명.update(<조건>, <수정내용>, {multi:true})
db.컬렉션명.updateMany(<조건>, <수정내용>)
조건에 맞는 문서가 없을시 upsert 속성이 트루라면 수정내용에 있는 내용을 가지고 문서를 만들어서 insert까지 하라
db.컬렉션명.update(<조건>,<수정내용>,{upsert:true})
Thre remove() method
db.collections.remove({'title':'MongoDB Overview'})
하나만 지지울때
db.컬렉션이름.remove(DELETION_CRITERIA,1)
다 지울때
db.컬렉션이름.remove({})
db.myCol.remove({"age":20}) // 복수의 문서 삭제
db.myCOl.remove({"age":20}, {justOne: true} ) // 첫째만
db.myCOl.remove({"age":20}, 1) // 첫째만
'DB > MongoDB 정리' 카테고리의 다른 글
MongoDB 튜토리얼 5. Aggregation (0) 2019.10.15 MongoDB 튜토리얼 4. CRUD (31) 2019.10.01 MongoDB 튜토리얼 3. CRUD (31) 2019.09.24 Mongo DB 튜토리얼 1. CRUD (0) 2019.09.10 NoSQL과 MongoDB (0) 2019.09.03