MongoDB 논리 쿼리 연산자

MongoDB 논리 쿼리 연산자 (Logical Query Operators)

여러 조건을 묶어서 "이것도 맞고 저것도 맞아야 해", "둘 중 하나만 맞아도 돼" 같은 논리를 표현하고 싶을 때 논리 연산자를 써요. 불리언 논리(and, or, nor)로 데이터를 걸러내는 연산자들이에요. 개별 필드 조건을 조합해서 복잡한 검색 조건을 만드는 데 핵심 역할을 합니다.

출처: Logical Query Predicate Operators - MongoDB 공식 매뉴얼

어떤 연산자가 있나요

논리 연산자는 서로 다른 필드의 조건들을 하나의 쿼리로 묶어요.

  • $and — 여러 조건 절을 논리 AND로 묶어서, 모든 절을 만족하는 도큐먼트를 반환해요.
  • $or — 여러 조건 절을 논리 OR로 묶어서, 최소한 하나 이상의 절을 만족하는 도큐먼트를 반환해요.
  • $not — 쿼리 조건의 효과를 뒤집어서, 그 조건과 일치하지 않는 도큐먼트를 반환해요.
  • $nor — 여러 조건 절을 논리 NOR로 묶어서, 모든 절을 다 실패해야(어느 절도 만족하지 않아야) 반환해요.

논리 연산자 쓰는 법

$or는 조건 배열을 받아요. 배열 안의 조건 중 하나라도 맞으면 그 도큐먼트가 결과에 포함돼요.

db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )

여러 조건을 기본적으로 나열하면 암묵적으로 AND로 처리돼요. 필드마다 조건이 다르고 전부 만족해야 한다면 그냥 객체에 나란히 적어도 되지만, 같은 필드에 여러 조건을 걸어야 하는 경우에는 $and로 명시하는 게 필요할 때가 있어요. $nor는 "이것도 저것도 아니어야 한다"는 부정 조건을 묶을 때 유용해요.

더 알아보기