programing

MongoDB - 여러 $or 연산

lastmoon 2023. 3. 13. 20:45
반응형

MongoDB - 여러 $or 연산

$or 연산을 여러 개 하려면 어떻게 해야 합니까?지금까지 다음을 시도했지만 묵묵히 두 번째 $or를 무시합니다.

{
  $or: [{a: 2}, {a: 3}], 
  $or: [{b: 5}, {b: 4}]
}

두 개의 동일한 키를 사용하고 있기 때문에 그런 것 같습니다.다른 방법이 없을까요?

Mongo 2.0은 $and 연산자를 추가했기 때문에 다음과 같은 쿼리를 수행할 수 있습니다.

db.things.find({$and: [{$or : [{'a':1},{'b':2}]},{$or : [{'a':2},{'b':3}]}] })

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24and

SQL과 같은 여러 개의 경우 $in을 사용하고, 사용하지 않는 경우 $nin vc를 사용합니다.이 문자열에 CPU 또는 메모가 포함되어 있습니다.

db.collection('vc').find({   "name" :   { $in: [ /cpu/, /memo/ ]   }     }

여러 $or 문을 중첩할 수 없습니다.

이것은, 다음의 문서에 기재되어 있습니다.

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or

그것과는 별개로, 당신의 질문은 매우 타당합니다.

a가 2인지 3인지, b가 5인지 4인지 쿼리하는 경우:

{a: {$in: [2,3]}, b: {$in: [4,5]} }

새로운 구문을 발명하려고 하지 마세요.

$는 두 번째 $이기 때문에 작업을 수행하지 않습니다.또는 첫 번째 $가 아니면 첫 번째 $에 장애가 발생해도 검증되지 않습니다.

Mongo man 페이지에서:

$and 연산자는 단락 평가를 사용합니다.첫 번째 식(예: )이 false로 평가되면 MongoDB는 나머지 식을 평가하지 않습니다.

그러나 $nested가 되지 않으면 다음과 같은 트릭을 수행합니다.

db.things.find$$or: {$or:[{'a':1}, {'b':2}}, {$or:[{'a':2}, {'b':3}}}}}}}}

언급URL : https://stackoverflow.com/questions/5150061/mongodb-multiple-or-operations

반응형