BEB 07 7-1

Donghun Seol·2022년 10월 24일
0

코드스테이츠 BEB 07

목록 보기
26/39

MongoDB Basic

atlas endpoint URI

Document


mongosh "mongodb+srv://cluster0.cr8dvwh.mongodb.net/myFirstDatabase" --apiVersion 1 --username <username>

아래의 단어들을 잘 기억하자.

도큐먼트
필드

컬렉션 : MongoDB의 도큐먼트로 구성된 저장소

JSON vs. BSON

JSON은 항상 활용하는 도큐먼트 형식이므로 제약사항을 잘 알아둬야 한다.
아래의 제약중 하나라도 충족되지 않으면 유효한 JSON이 안된다.
1. {} 중괄호로 시작하고 끝난다.
2. 필드와 값이 콜론으로 분리되고, 데이터셋은 쉼표로 구분한다.
3. 문자열인 필드도 쌍따옴표로 "" 감싸야 한다.

BSON은 문자열 형식인 JSON을 바이너리로 변환한 것
효율적이고, 가볍고, 다양한 자료형을 표현 가능하다.
몽고DB는 내부적으로 BSON으로 데이터를 저장하고 있다.

Importing & Exporting

JSON 형식으로 입, 출력

  • mongoimport
  • mongoexport
    mongoexport --uri "mongodb+srv://cluster0.cr8dvwh.mongodb.net/sample_airbnb" --username snowDelver --collections=listingsAndReviews --out=listingsAndReviews.json

BSON 형식으로 입, 출력

  • mongorestore
  • mongodump

mongodump --uri "mongodb+srv://cluster0.cr8dvwh.mongodb.net/sample_airbnb" --username snowDelver

MongoDB CRUD

CREATE

모든 도큐먼트는 (지정하지 않으면 자동으로 생성되는)_id 필드로 구분된다.
내부의 필드, 값이 모두 동일하더라도 _id가 다르면 다른 도큐먼트다.
존재하지 않는 collection에 insert시 해당 컬렉션이 자동으로 생성된다.
다중 insert를 할때, 오류 발생시 다음 insert 수행 여부를 지정하는 ordered 옵션이 있다.

READ

특별히 어려운 내용은 없다.
db.collection.find({findKey:findVal})
db.collection.findOne({findKey:findVal})
db.collection.find({findKey:findVal}).count()

UPDATE

여러개의 값을 업데이트 할 때 $inc와 같은 연산자가 필수

db.collection.updateMany(
  {"city":"ALPINE"},
  {"$inc":{"pop":10}}
)

배열형 데이터에 필드를 푸쉬할 때 $push
존재하지 않는 배열에 푸쉬하면 자동으로 배열 필드를 생성한다.

db.grades.updateOne(
  {"student_id": 250, "class_id": 339 },
  { "$push": { "scores": { "type": "extra credit", "score": 100 } } }
);

scores를 잘못 입력한 score 필드 삭제할때 $unset

db.grades.update(
  { "student_id": 250, "class_id": 339 },
  { "$unset": { "score": 1 } }
);

DELETE

find와 거의 동일하게 활용한다.
컬렉션을 삭제할때는 drop() 메서드를 호출한다.

db.collection.delete({"key":"val"});
db.collection.deleteMany({"key":"val"});
db.collection.drop();

Advanced CRUD

비교 연산자

일반적인 비교연산자들 활용한다.
$eq,$gt, $gte
$ne, $lt, $let

기본값은 $eq 연산자 이다.

db.trips.find({
  "tripduration":{"$lte":70},
   "usertype":{"$ne":"Subscriber"}
})

논리 연산자

$and,$or,$nor,$not

기본값은 $and 연산자 이다.
$not을 제외하고 피연산자로 배열을 받는다.

복잡한 다중 논리연산자 적용예시
ICN에서 출발하거나 도착하는 CR2 및 A81비행기를 찾을때
($or이 두번 활용되므로 $and 연산자를 삽입해줘야 한다.

db.flight.find({
  "$and":[{"$or":[{dst_airpot:"ICN"}, {src_airpot:"ICN"}]},
          {"$or":[{airplane:"CR2"}, {airplane:"A81"}]}
  ]
});
          

표현 연산자

배열 연산자

배열 연산자와 Projection

배열과 서브 도큐먼트 쿼리하기

profile
I'm going from failure to failure without losing enthusiasm

0개의 댓글