ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MongoDB 튜토리얼 2. CRUD
    DB/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
Designed by Tistory.