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
'IT story' 카테고리의 다른 글
ANSI JOIN과 non-ANSI JOIN 쿼리가 다르게 수행됩니까? (0) | 2020.12.25 |
---|---|
데이터 과학자의 필수 기술 (0) | 2020.12.25 |
이 Scala 코드를 조금만 변경해도 성능이 크게 달라지는 이유는 무엇입니까? (0) | 2020.12.25 |
max-margin CSS 속성이 필요하지만 존재하지 않습니다. (0) | 2020.12.25 |
모든 최근 SVN 커밋 메시지 목록을 얻는 방법은 무엇입니까? (0) | 2020.12.25 |