이 장에서는 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