[MONGODB] 에 '또는'조건 MongoDB의 쿼리
MONGODB에 '또는'조건 MongoDB의 쿼리
나는 트랙 그룹 구성원이 포함 된 문서가 그래서. 각 포함 된 문서는 다른 모음, 시작 날짜에 그룹을 가리키는 ID를 가지고, 그리고는 날짜를 만료 선택 사항.
나는 그룹의 현재 구성원에 대한 조회 할. "현재"수단 시작 시간이 덜 현재 시간보다, 그리고 시간이 현재 시간 또는 널 (null)보다 큰 만료됩니다.
이 조건 쿼리는 완전히 나를 차단하고 있습니다. 나는 두 개의 쿼리를 실행하고 결과를 병합하여 그것을 할 수 있지만 그 추한 것 한 번에 모든 결과에서 로딩이 필요합니다. 아니면이 (가) 먼 미래의 어떤 임의의 날짜에 시간이 만료 기본 수 있지만, 심지어 이보다 잠재적으로 부서지기 쉬운 것 같다. SQL에서 "(지금> = 만료 ()) 또는 (NULL이 만료)"와 난 그냥 그것을 표현했던 -하지만 난 몽고에서 그렇게하는 방법을 모르겠어요.
어떤 아이디어? 정말 감사합니다 사전에있다.
해결법
-
==============================
1.그냥 내가 나중에이 페이지에 걸쳐있는 경우의 사람의 비틀 거림을 업데이트 할 거라고 생각했다. 1.5.3로, 지금은 몽고 진정한 $ 또는 연산자를 지원합니다 http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or
그냥 내가 나중에이 페이지에 걸쳐있는 경우의 사람의 비틀 거림을 업데이트 할 거라고 생각했다. 1.5.3로, 지금은 몽고 진정한 $ 또는 연산자를 지원합니다 http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or
귀하의 질의 해주기로 렌더링 할 수있다 "(만료> = NOW ()) OR (만료 NULL은 IS)"
{$or: [{expires: {$gte: new Date()}}, {expires: null}]}
-
==============================
2.경우 사람의 발견에 유용, www.querymongo.com 않는 SQL 및 MongoDB를 포함 OR 절 사이의 번역. 당신은 SQL 상응하는 알 때 구문을 파악 정말 도움이 될 수 있습니다.
경우 사람의 발견에 유용, www.querymongo.com 않는 SQL 및 MongoDB를 포함 OR 절 사이의 번역. 당신은 SQL 상응하는 알 때 구문을 파악 정말 도움이 될 수 있습니다.
또는 문장의 경우는 다음과 같습니다
SQL :
SELECT * FROM collection WHERE columnA = 3 OR columnB = 'string';
MongoDB를 :
db.collection.find({ "$or": [{ "columnA": 3 }, { "columnB": "string" }] });
-
==============================
3.쿼리 함께 기본 및 식으로 몽고에서 객체. 몽고는 현재 그러나 이러한 쿼리를 표현하는 방법이 있습니다, 이러한 쿼리에 대한 OR 연산자를 포함하지 않습니다.
쿼리 함께 기본 및 식으로 몽고에서 객체. 몽고는 현재 그러나 이러한 쿼리를 표현하는 방법이 있습니다, 이러한 쿼리에 대한 OR 연산자를 포함하지 않습니다.
"에서"사용 또는 "여기서".
그 거 이런 식으로 뭔가 :
db.mycollection.find( { $where : function() { return ( this.startTime < Now() && this.expireTime > Now() || this.expireTime == null ); } } );
-
==============================
4.db.Lead.find (
db.Lead.find (
{"name": {'$regex' : '.*' + "Ravi" + '.*'}}, { "$or": [{ 'added_by':"arunkrishna@aarux.com" }, { 'added_by':"aruna@aarux.com" }] }
);
-
==============================
5.이 인덱스를 사용할 수 없기 때문에 쿼리가 부분적으로 느려집니다 달러 (A $)를 사용. 문제는 이런 종류의, 나는 ()는 자연적으로 항상 지금보다 더 클 것 "만료"필드에 높은 값을 저장하기 위해 더 좋을 거라 생각합니다. 당신도 미래 년의 매우 높은 날짜 수백만 달러를 저장하거나 결코 나타 내기 위해 별도의 유형을 사용할 수 있습니다. 크로스 타입의 정렬 순서는 여기에서 정의된다.
이 인덱스를 사용할 수 없기 때문에 쿼리가 부분적으로 느려집니다 달러 (A $)를 사용. 문제는 이런 종류의, 나는 ()는 자연적으로 항상 지금보다 더 클 것 "만료"필드에 높은 값을 저장하기 위해 더 좋을 거라 생각합니다. 당신도 미래 년의 매우 높은 날짜 수백만 달러를 저장하거나 결코 나타 내기 위해 별도의 유형을 사용할 수 있습니다. 크로스 타입의 정렬 순서는 여기에서 정의된다.
빈 정규식 또는 MaxKey (당신의 언어 지원이있는 경우) 모두 좋은 선택입니다.
from https://stackoverflow.com/questions/2008032/mongodb-query-with-an-or-condition by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 빠른지도에 비해 MongoDB를 집계 프레임 워크인가 / 감소? (0) | 2019.12.03 |
---|---|
[MONGODB] MongoDB를 : 어떻게 배열 내의 인덱스에 의해 참조 배열에서 하나의 하위 요소를 업데이트하려면 어떻게해야합니까? (0) | 2019.12.03 |
[MONGODB] 몽구스, 발견과 특정 필드를 선택 (0) | 2019.12.03 |
[MONGODB] MongoDB의 두 컬렉션을 병합 (0) | 2019.12.03 |
[MONGODB] 작동하지 않는 것 MongoDB를에 ISODate와 날짜 쿼리 (0) | 2019.12.03 |