이 장에서는 SQL의 "and" 및 "or" 조건과 유사한 MongoDB의 논리 연산자를 소개합니다.
MongoDB에서 지원하는 논리 연산자
연산자 | 설명 |
---|---|
$and | SQL의 "and" 조건과 유사하게 모든 지정된 조건을 충족하는 문서와 일치함 |
$not | 지정된 표현식에 대한 논리 NOT 연산을 수행함 |
$or | 최소한 하나의 지정된 조건을 충족하는 문서와 일치함, SQL의 "or" 조건과 유사함 |
$nor | 양쪽 지정된 조건을 충족하지 못하는 문서와 일치함 |
$and
구문:
{ $and: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
설명:
-
은 하위 표현식 - $and는 모든 하위 표현식을 포함하는 배열을 가져와야 하며, 모든 하위 표현식이 충족되어야 함
예시:
db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )
동등한 SQL:
select * from inventory where qty > 50 and qty < 10
$not
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
설명:
- 조건이 price > 1.99인 경우, NOT 연산은 price <= 1.99가 됨.
- 이는 price가 1.99보다 작거나 같은 문서를 질의하거나 price 필드가 없는 문서를 가리킴.
SQL과 유사함:
select * from inventory where price <= 1.99
$or
SQL의 "or" 조건과 유사함 구문:
{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
설명:
-
은 하위 표현식 - $or는 최소한 하나의 하위 표현식을 포함하는 배열을 가져와야 하며, 적어도 하나의 하위 표현식이 충족되어야 함
예시:
db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
동등한 SQL:
select * from inventory where quantity < 20 or price=10
$nor
논리적 NOR 연산 구문:
{ $nor: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
예시:
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
설명:
- price != 1.99이고 sale != true, 또는
- price != 1.99이고 sale 필드가 존재하지 않음, 또는
- price 필드가 존재하지 않고 sale != true