IT story

MongoDB-여러 $ or 작업

hot-time 2020. 12. 25. 09:30
반응형

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 또는 memo가 포함되어 있음을 찾습니다.

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]}}

새로운 구문을 만들려고하지 마십시오.


두 번째 $ or는 첫 번째가 실패하면 유효성을 검사하지 않으므로 $ and는 작업을 수행하지 않습니다.

Mongo man 페이지에서 :

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

중첩 된 $ or 그러나 트릭을 수행해야합니다.

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

참조 URL : https://stackoverflow.com/questions/5150061/mongodb-multiple-or-operations

반응형