MongoDB Document 인출하기, db.collection.find() (2)

MongoDB Document 인출하기, db.collection.find() (1)에서 이어지는 글입니다.

MongoDB의 논리 연산자는 NOT, AND, OR, NOR의 네 종류가 있습니다. find() 메서드로 데이터를 인출 할때 논리 연산자를 이용해 조건을 다양하게 부여할 수 있습니다.  기본적인 사용 방법은 비교연산자와 유사합니다.

db.collection.find( { '$Operator' : [ { expression1, 
                                        expression2 ... } ] 
                     } );

$operator 부분에 $not, $and, $or, $nor 의 논리연산자가 들어가고 expression에 조건문이 들어갑니다.  비교연산자를 이용한 조건문 작성은 최상단에 링크된 1편을 참조하세요.  소괄호와 중괄호, 대괄호가 모두 쓰여서 대단히 복잡해 보이지만 대괄호의 위치만 신경쓰면 크게 어렵지 않습니다.

그럼 OR 연산으로 name = ‘a’ 이거나 age >= 19 인 조건문을 작성해 보겠습니다.

db.collection.find( { '$or' : [ { 'name' : 'a' },
                                { 'age' : { '$gte' : 19 } } ] } );

다른 논리 연산자들도 동일한 형태로 조건을 만듭니다. 다만 AND의 경우에는 콤바로 단순히 표현식을 열거하는 것 만으로도 AND 연산으로 간주된다는 특징이 있습니다. 예를들어

db.collection.find( { 'name' : 'jane' }, 
                    { 'gender' : 'female' } );

db.collection.find( { '$and' : [ { 'name' : 'jane' }, 
                                 { 'gender' : 'female } ] 
                     } );

위 두가지 표현식은 동일한 의미를 갖습니다. 단순히 AND 연산만 할 것이라면 콤마로 이어서 조건을 나열해 주는 것이 좋겠지만 다른 논리 연산자와 함께 쓴다고 가정 했을 때는 아래의 표현식을 사용하는 것이 좋을 것으로 생각됩니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>