У меня есть документ, который выглядит примерно так:
{ "_id" : ObjectId("4e5044ecf9d7954533000002"), "events" : [
{
"state" : 1,
"time" : 1313882989,
},
{
"time" : 1313883005,
"state" : 0,
}
]}
Вы можете видеть, что "события" - это массив встроенных документов. состояние: 1 означает, что документ был установлен как «активный» в это время (секунды в UTC), а состояние: 0 означает, что он был установлен как «неактивный» в то время. По сути, это дает мне временной диапазон, когда этот документ был активен (от 1313882989 до 1313883005)
Теперь я пытаюсь определить, какие документы были активны в любой конкретный момент времени, например, 1313883013, время, которое находится между активными и неактивными событиями.
Я могу получить что-то с помощью этого запроса:
db.plays.find({events:{$elemMatch:{state:1,time:{$lte:1313883013}}}})
Соответствует полному внедренному документу, где состояние = 1 И время <1313883013. Однако этого недостаточно, поскольку мне нужно убедиться, что документ <strong> также не содержит неактивное событие в 1313883013 или ранее, поэтому я попробовал это:
db.plays.find({events:{$elemMatch:{state:1,time:{$lte:1313883013}},$not:{$elemMatch:{state:0,time:{$lte:1313883013}}}}})
но безрезультатно. И я пробовал разные варианты этого.
Надеюсь, я достаточно ясно это объяснил, заранее спасибо за любую помощь !!