예 제목이 길기도하지만 그 나는 간결하게 문제를 설명 할 수있는 간단한 방법 :mongodb에서 임베디드 된 문서가 하나 있지만 다른 문서는없는 문서를 선택하는 방법은 무엇입니까?
{ "_id" : ObjectId("4e5044ecf9d7954533000002"), "events" : [
{
"state" : 1,
"time" : 1313882989,
},
{
"time" : 1313883005,
"state" : 0,
}
]}
당신은 "이벤트"는 인 것을 알 수 있습니다 :
를 내가 이렇게 보이는 문서가 임베디드 된 문서의 배열. 상태 : 1은 해당 시간 (UTC의 초)에 문서가 "활성"으로 설정되었음을 의미하고 상태 : 0은 해당 시간에 "비활성"으로 설정되었음을 의미합니다. 이것은 본질적으로이 문서가 활성화 된 시간 범위를 제공합니다 (1313882989에서 1313883005까지)
1313883013과 같이 특정 시간에 어떤 문서가 활성화되었는지 확인하려고 할 때 활성 상태와 비활성 상태 사이의 시간 이벤트.
나는이 쿼리 뭔가 얻을 수 있습니다 : 그것은 내가 확인해야하기 때문에 상태 = 1 AND 시간이 < 1313883013.이, 그러나 충분하지 않습니다 완전한 포함 된 문서를 일치
을db.plays.find({events:{$elemMatch:{state:1,time:{$lte:1313883013}}}})
문서가 도에 비활성 이벤트를 포함하지 않거나 1313883013. 전에 그래서 나는이 시도했다 :
db.plays.find({events:{$elemMatch:{state:1,time:{$lte:1313883013}},$not:{$elemMatch:{state:0,time:{$lte:1313883013}}}}})
을하지만 아무 소용. 그리고 나는 그것의 다른 변형을 시도했습니다.
나는 어떤 도움을 주셔서 감사합니다.
이벤트가 여러 개의 0/1 전환을 가질 수 있습니까? 아니면 주에 허용되는 세 가지 옵션으로 [1] 또는 [1, 0] 중 하나라고 말하고 있습니까? –
상태는 기본적으로 "비트 플래그"0 또는 1이며 다른 옵션은 없습니다. – talentedmrjones