programing

'or' 조건을 가진 MongoDB 쿼리

linuxpc 2023. 3. 12. 10:30
반응형

'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

반응형