2014-01-30 1 views
3

만료 [만료] (존재하지 않음) 또는 만료 날짜가 2/2/14 이후 인 계정에 대한 문서를 쿼리해야합니다. 이렇게하려면 내 MongoDB의 쿼리는 : 나는 올바른 몽구스 .or().and().exists() 체인에 문제가있어

db.events.find({ _account: ObjectId("XXXX"), 
    $or: [ 
     {expires: {$gt: ISODate('2014-02-02')}}, 
     {expires: {$exists: false}} 
    ] 
}); 

, 어떻게 몽구스에이 변환 것인가?

감사합니다.

답변

7

셸에서와 같이 같은 구문을 사용해도 아무런 문제가 없어야합니다. 아직 쉘 헬퍼가없는 자바 스크립트입니다.

var query = Events.find({ _account: "XXXX" }); 

query.or(
    {expires: {$gt: Date(2014,02,02)}}, 
    {expires: {$exists: false }} 
); 

query.exec(function(err, events) { 
    if (err) // TODO 
    // do something with events 
}); 

또는 다른 조합 :

Events.find({ _account: "XXXX", 
    $or: [ 
    {expires: {$gt: Date(2014,02,02)}}, 
    {expires: {$exists: false }} 
}, function(err, events) { 
    if (err) // TODO 
    // do something with events 
}); 

는 다른 방법으로 당신은 쿼리를 작성하기 위해 다른 헬퍼를 사용하고 있습니다. 이러한 '도우미'는 주로 Java와 같은 다른 비 동적 언어와 구문 패리티를위한 드라이버에 존재합니다. 이 방법을 선호하고 노드 참조를 찾을 수없는 경우 Java에서 QueryBuilder 사용 예제를 찾을 수 있습니다. 몽구스의 경우보기 좋은 검색어 용으로 documentation이 있습니다.

동적 언어는 쿼리 등에 사용되는 것과 같은 개체 구조를 정의하는 데보다 고유 한 방식을 사용하므로 대부분의 사람들이이를 선호합니다.

+0

아, fantastic- 나는 도우미를 사용해야하고 "또는"원래 "찾기"와 함께 어떻게 구현되었는지 확실하지 않다고 생각했습니다. 오늘 나중에 사무실에있을 때 이것을 시도 할 것입니다. – justin