주말공부 - Toy

노태경·2021년 7월 11일
0

SEB-Section 3

목록 보기
26/31

구간트리

일반적인 순회방법으로 최솟값이나 합을 구하는 것은 O(N)
구간트리를 사용할 경우 O(logN)

주어진 배열의 구간을 표현하는 이진 트리를 만드는 것
배열의 길이가 15일 때 세그먼트 트리의 각 노드가 표현하는 구간을 나타낸 것
맨 위 노드가 루트이고, 아래는 자식 노드들을 나타냄
최소값을 구하는 문제였으므로
객체를 이용해 가장 작은 단위로 나눈 다음, 최소값을 노드의 값으로 정하면서 올라옴
그리고 겹치는 범위를 찾는 로직도 비슷하게 보임

두 점 사이의 가장 가까운 거리

좌표평면 상의 다양한 점들을 입력받아 가장 가까운 두 점 사이의 거리를 리턴
효율적인 알고리즘은 O(N*logN)의 방법이 있다고 함
분할정복, 병합정렬을 이용해 해결
단 단순히 분할정복을 하면 인접하지 않은 점과의 거리는 구할 수 없기에 이점을 주의해야 함..

MongoDB CRUD

  • 비교연산자

$eq EQual 기본 연산자
$ne Not Equal

$gt Greater Than
$lt Less Than

$gte Greater Than or Equal to
$lte Less Than or Equal to

{필드 : {연산자 : 값}}
{"tripduration" : {"$lte" : 70}}과 같이 사용 70보다 작거나 같은 경우 쿼리
{"tripduration" : {"$lte" : 70}, "usertype":{"$ne": "Subscriber" }}
과 같이 이어서 사용

  • 논리 연산자

$and 모든 쿼리와 일치 , 기본 연산자
$or 쿼리 중 하나라도 일치
$nor 주어진 모든 쿼리와 일치하지 않음
{ 연산자 : [ {쿼리1} , {쿼리2} ] } >> 여러 조건을 처리하기 때문에 배열 위치
$not 주어진 쿼리와 일치하지 않음
{ $not : { 쿼리 } } >> 단순이 뒤에 오는 조건만 부정하기에 배열이 필요없음

{ "$and" : [ { 필드1 : {조건1} }, { 필드1 : {조건2} } ] }
{ { 필드1 : {조건1} }, { 필드1 : {조건2} } } >> 생략되면 기본은 $and
{ 필드1 : {조건1, 조건2} } 같은 필드에 대한 조건이므로 함축 가능

동일한 연산자를 두 번 이상 포함할 때 $and를 명시하여 사용

  • 표현 연산자
    $expr 집계 표현식
    $필드 로 해당 필드의 값을 가져올 수 있음

  • 배열 연산자
    $push js와 동일한 기능, 배열이 아닌 필드에 사용하면 필드 타임을 배열로 바꿈
    배열 요소로 쿼리할 때는 순서가 중요
    $all 배열 요소와 순서에 상관없이 지정된 요소가 포함된 모든 도큐먼트를 찾을 수 있는 연산자
    $size 배열의 길이에 따라 결과 제한하는 연산자
    $find에 프로젝션을 추가하면 원하는 정보만 결과로 가져올 수 있다
    $find(쿼리, projection)
    $find(쿼리, {price: 1, name: 1})
    1 - 포함, 0 - 제외
    $elemMatch
    첫번째 인자에서 쓰일 경우, 배열 필드의 서브 도큐먼트 필드가 쿼리와 일치하는 문서를 찾는다
    두번째 인자에서 쓰일 경우, 지정된 기준과 일치하는 요소가 하나 이상있는 배열 요소만 프로젝션

  • sub document에 접근하는 방법
    도큐먼트 안의 도큐먼트에 접근하는 방법은
    객체에 접근하듯이 dot notation을 쓰면됨

  • 배열에 중첩된 document에 접근
    dot notation으로 배열의 인덱스 표현(0부터 시작되는 것 동일)

  • Aggregation Framework
    aggrewgate로 MQL보다 다양한 쿼리를 작성 가능
    파이프라인의 각 단계 순서대로 데이터 처리

profile
개발자 공부 일기😉

0개의 댓글