책(200)
-
[4.2] 쿼리 / 쿼리조건(Type specific)
3. 형 특정 쿼리(type-specific query) 몽고 DB는 도큐먼트 내에서 다양한 데이터타입을 사용할 수 있다. 그리고 일부 데이터타입은 쿼리 시 타입에 특정하게 작용한다. 3.1 null null은 키의 값이 null인 경우와 키가 '존재하지 않는' 경우 모두를 뜻한다. 따라서 값이 null인 키만 찾고 싶으면 추가적인 조건($exist)을 사용해야 한다. db.vector { x: 5 } { x: 3, y: 4 } { x: 4, y: 3 } { x: null, y: 5 } { x: null, y: null } y값이 null인 도큐먼트를 찾고싶다고 치자 그냥 null로 검색해버리면 y키가 없는 도큐먼트도 내뿜는다 db.vector.find( { y: null } ) { x: 5 } { x:..
2022.07.19 -
[4.2] 쿼리 / 쿼리조건(쿼리 연산자)
2. 쿼리 조건 쿼리는 완전 일치 exact match 외에도 범위, OR절, 부정 조건 negation 등 복잡하고 다양한 조건으로 검색이 가능하다. 이 과정에서 쿼리 실렉터 query selector가 쓰이며, 용도별로 크게 Comparison, Logical, Element, Evaluation, Geospatial, Array, Bitwise로 분류된다. 2.1 Comparison ◎ 범위( $le, $lte, $gt, $gte ) 각각 $le (<), $lte ( ≤ ), $gt ( > ), $gte ( ≥ )에 해당하는 비교 연산자이다 조합해서 특정 범위를 한정하며, 날짜 쿼리에 특히 유용하다 90년대생인 사람들만 쿼리하고 싶다면? const end = new Date(1999,12,31); ..
2022.07.18 -
[4.1] 쿼리 / find
1. find / db.collection.find(query, projection) 쿼리에 사용하는 함수 컬렉션에서 도큐먼트의 서브셋(빈 컬렉션 ~ 컬렉션 전체까지)을 가리키는 '커서'를 반환한다 쿼리조건에 여러 키/값 쌍을 추가해 검색을 제한한다. 1.1 projection (반환받을 키 지정하기) { : , : ... } { : 1/0 혹은 true/false } 로 반환받을 키를 지정한다 $ 배열 projection operator와 함께 사용해서 쿼리조건에 맞는 배열의 첫 번째 값만 얻을 수도 있다 그 외 array projection, $meta expression, aggregation expression 등이 있다 공식문서 db.users { "_id" : ObjectId("62d53410..
2022.07.18 -
[타입시스템 13] Type vs Interface
타입스크립트에서 명명된 타입(named type)을 정의하는 방법은 두 가지로, type 키워드와 interface 키워드를 사용하는 것이다. 대부분의 경우에는 둘 다 사용해도 되지만, 이 둘의 공통점/차이점을 알고 프로젝트內 일관성을 유지하는 것이 가장 중요하다. 0. 여담 Interface 정의 시 접두사로 I를 붙이는 경우를 종종 볼 수 있다( IProps, IState처럼 ) 이는 C#에서 비롯된 관례인데, TS 초창기에는 종종 이를 사용하기도 했으나 현재는 유용하지도 않고, 지양해야 할 스타일로 여겨지고 있다. 1. 공통점 추가 속성 할당시 오류를 발생시킨다(잉여 속성 체크) 함수 타입을 정의할 수 있다 제네릭을 사용할 수 있다 인터페이스는 타입을 확장할 수 있고, 타입은 인터페이스를 확장할 수..
2022.07.18 -
[타입시스템 12] 함수 표현식에 타입 적용하기
0. statement vs expression statement : 여러 토큰의 집합이다 expression : 값으로 평가될 수 있는 statement이다 당연한 소리지만 JS/TS 모두 함수에 대한 statement(문)와 expression(표현식)을 다르게 인식한다. * 토큰 : 문법적인 의미를 가지는, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소 1. TS에선 함수 표현식 사용이 더 좋다 함수의 매개변수부터 반환값까지 전체를 함수 타입으로 선언해 함수 표현식에 재사용할 수 있기 때문 코드 자체도 간결하고 안전해진다 특히, 함수 시그니처가 반복되는 유사한 형태라면 하나의 함수 타입으로 통합해 간결하게 쓸 수 있다 예시1) 반복되는 함수 시그니처를 하나의 함수 타입으로 통합, 재사용 하나의..
2022.07.18 -
[1장] 타입스크립트 알아보기(2/2)
4. 구조적 타이핑 JS는 본질적으로 덕 타이핑 기반이다. 만약 어떤 함수의 매개변수 값이 제대로 주어진다면, 값이야 어찌 만들어졌든 신경 쓰지 않고 사용하는 것이다. 한편 TS는 덕 타이핑을 모델링하기 위해 구조적 타이핑을 사용한다. 따라서 구조적 타이핑을 제대로 이해해야 견고한 코드 작성이 가능하다 가. 구조적 타이핑 구조적 타입 시스템(Structural Type System)이라고도 불리며, 실제 구조와 정의에 의해 결정되는 타입 시스템의 한 종류이다. 명시적 선언이나 이름을 기반으로 하는 명목적 타입 시스템(Nominal Type System / Java, C# 등등)과 다르고, 런타임에 타입을 체크하는 덕 타이핑과도 다르다. 나. so what? 그래서 구조적 타이핑 뭐 어쩌라는 걸까? 아래 ..
2022.07.13