'or' 조건을 가진 MongoDB 쿼리
그룹 멤버쉽을 추적할 수 있는 문서가 있습니다.포함된 각 문서에는 다른 집합의 그룹을 가리키는 ID, 시작 날짜 및 선택적 만료 날짜가 있습니다.
그룹의 현재 멤버에 대해 쿼리하고 싶습니다."Current"는 시작 시간이 현재 시간보다 작고 만료 시간이 현재 시간 또는 null보다 크다는 것을 의미한다.
이 조건부 쿼리가 나를 완전히 차단하고 있다.두 개의 쿼리를 실행하고 결과를 병합하는 방식으로 작업을 수행할 수 있지만, 이는 보기 흉하고 모든 결과를 한 번에 로드해야 합니다.또는 만료 시간을 먼 미래의 임의의 날짜로 디폴트할 수도 있지만, 그것은 더 추하고 잠재적으로 불안정해 보입니다.SQL에서는 (http > = Now() 또는 (http IS NULL)"로 표현합니다만, Mongo에서는 어떻게 표현해야 할지 모르겠습니다.
좋은 생각 있어요?잘 부탁드립니다.
나중에 우연히 이 페이지를 보게 될 경우를 대비해서 업데이트해 두려고 했어요.1.5.3 이후 mongo는 실제 $or 연산자를 지원합니다.http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or
이제 "(filename > = Now()) OR(filename IS NULL)"에 대한 쿼리를 다음과 같이 렌더링할 수 있습니다.
{$or: [{expires: {$gte: new Date()}}, {expires: null}]}
www.querymongo.com은 OR 절을 포함한 SQL과 MongoDB 간의 변환을 수행합니다.SQL에 해당하는 것을 알고 있으면 구문을 파악하는 데 매우 도움이 됩니다.
OR 문장의 경우 다음과 같습니다.
SQL:
SELECT * FROM collection WHERE columnA = 3 OR columnB = 'string';
MongoDB:
db.collection.find({
"$or": [{
"columnA": 3
}, {
"columnB": "string"
}]
});
'or' 조건을 가진 MongoDB 쿼리
db.getCollection('movie').find({$or:[{"type":"smartreply"},{"category":"small_talk"}]})
'or', 'and', 조건이 결합된 MongoDB 쿼리입니다.
db.getCollection('movie').find({"applicationId":"2b5958d9629026491c30b42f2d5256fa8",$or:[{"type":"smartreply"},{"category":"small_talk"}]})
기본적으로는 Mongo에서 객체를 쿼리합니다.Mongo는 현재 이러한 쿼리를 위한 OR 연산자를 포함하지 않지만 이러한 쿼리를 표현하는 방법이 있습니다.
"in" 또는 "where"를 사용합니다.
이렇게 될 거야
db.mycollection.find( { $where : function() {
return ( this.startTime < Now() && this.expireTime > Now() || this.expireTime == null ); } } );
db.Lead.find(
{"name": {'$regex' : '.*' + "Ravi" + '.*'}},
{
"$or": [{
'added_by':"arunkrishna@aarux.com"
}, {
'added_by':"aruna@aarux.com"
}]
}
);
사용방법$where
부분적으로 인덱스를 사용할 수 없기 때문에 쿼리가 느려집니다.이러한 문제에 대해서는 당연히 Now()보다 큰 "expires" 필드에 높은 값을 저장하는 것이 좋다고 생각합니다.앞으로 수백만 년 동안 매우 오래된 날짜를 저장하거나 다른 유형을 사용하여 없음을 나타낼 수 있습니다.여기서 크로스 타입의 정렬 순서를 정의합니다.
빈 Regex 또는 MaxKey(언어로 지원되는 경우)를 선택하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/2008032/mongodb-query-with-an-or-condition
'programing' 카테고리의 다른 글
'필드는 찾을 수 없는 유형의 빈을 필요로 했습니다.' mongodb를 사용한 오류 스프링 restful API입니다. (0) | 2023.03.12 |
---|---|
고유한 필터와 함께 Oracle의 LISTAGG 함수를 사용하는 방법은 무엇입니까? (0) | 2023.03.12 |
큰 리덕스 상태가 애플리케이션의 퍼포먼스에 영향을 미칩니까? (0) | 2023.03.12 |
ui.bootstrap.datepicker가 열려 있고 모드에서 작동하지 않음 (0) | 2023.03.07 |
rest API에 여러 매개 변수 전달 - Spring (0) | 2023.03.07 |