논리 연산자
문자의미
$and | 2개 이상의 조건이 모두 일치하는 모든 도큐먼트 반환 |
$not | 쿼리 조건과 일치하지 않는 도큐먼트 반환 |
$nor | 2개 이상의 조건이 모두 일치하지 않는 모든 도큐먼트 반환 |
$or | 2개 이상 쿼리 조건 중 일치하는 모든 도큐먼트 반환 |
$and
2개 이상의 조건이 모두 일치하는 모든 도큐먼트 반환
#문법 { $and: [ { 조건1 }, { 조건2 } , ... , { 조건N } ] }
#예시) 키가 160 이상이고, 주소가 "S"로 이후로 시작하는 값 조회
query = { "$and": [ { "height": { "$gte": 160 } }, { "address": { "$gt": "S" } } ] }
mydoc = mycol.find(query)
$not
쿼리 조건과 일치하지 않는 도큐먼트 반환
다른 연산자나 정규 표현식으로부터 얻은 결과의 여집합을 조회
#문법 { 필드 명: { $not: { 조건 } } }#예시) 이름이 A로 시작하지 않는 모든 user의 도큐먼트를 찾는다. query = { "first_name": { "$not": /^A/ } } mydoc = mycol.find(query)
$nor
2개 이상의 조건이 모두 일치하지 않는 모든 도큐먼트 반환
#문법 { $nor: [{ 조건1 }, { 조건2 }, ...] }
#예시) 나이가 19살 이하고, 키가 155 이상이 아닌 값 조회
query = { $nor: [ {"age": { "$lte": 19 } }, { "height": { "$gte": 155 } } ] }
mydoc = mycol.find(query)
$or
2개 이상 쿼리 조건 중 하나 이상 일치하는 모든 도큐먼트 반환
#문법 { $or: [{ 조건1 }, { 조건2 }, ...] }
#예시) 주소가 Seoul이고, 나이가 20이 넘는 값을 조회
query = { "$or": [ { "address": "Seoul" }, { "age": { "$gt": 20 } } ] }
mydoc = mycol.find(query)
Tip! : 💡 $or vs $in
같은 필드의 값에 대해 조건을 주어 조회를 한다면 $or < $in
#예시 account.find( { "qty": { "$in": [ 5, 15 ] } } )
다른 필드의 값에 대해 조건을 주어 조회를 한다면 $or > $in
#예시 account.find( { "$or": [ { "quantity": { "$lt": 20 } }, { "price": 10 } ] } )
'DB > MongoDB' 카테고리의 다른 글
데이터 베이스(No SQL) - MongoDB Lookup 연산자 (0) | 2021.01.26 |
---|---|
데이터 베이스(No SQL) - MongoDB Update 메소드 활용 (0) | 2021.01.23 |
데이터 베이스(No SQL) - MongoDB 비교 연산자 (0) | 2021.01.23 |
데이터 베이스(No SQL) - MongoDB 데이터 삽입 (Insert) (0) | 2021.01.22 |
데이터 베이스(No SQL) - MongoDB Create (CRUD) (0) | 2021.01.22 |
댓글