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
'programing' 카테고리의 다른 글
"TypeError: 'module' 개체를 호출할 수 없습니다." pprint를 사용하려고 합니다. (0) | 2023.03.13 |
---|---|
Json은 그렇다.NET 캐시 유형의 시리얼화 정보 (0) | 2023.03.13 |
react.js의 인스턴스 v 상태 변수 (0) | 2023.03.13 |
jQuery.getJSON 및 jQuery.parseJSON return [객체]? (0) | 2023.03.13 |
그래들 및 스프링 부츠와 함께 롬복 사용 (0) | 2023.03.13 |