MongoDb ищет вложенный массив между dateTimes с использованием Robomongo

Я очень новичок в MongoDb и экспериментирую, чтобы посмотреть, смогу ли я использовать его для хранения данных временных рядов.

Я вставил следующие данные...

{
"_id" : ObjectId("5785f186ed936527c05efa10"),
"Timestamp" : ISODate("2006-07-13T07:42:00.000Z"),
"Label1" : "Lab1",
"Attr" : "atrr1",
"Readings" : [ 
    {
        "DateTime" : ISODate("2006-07-13T07:42:06.355Z"),
        "Value" : "22"
    }, 
    {
        "DateTime" : ISODate("2006-07-13T07:42:07.355Z"),
        "Value" : "22"
    }, 
    {
        "DateTime" : ISODate("2006-07-13T07:42:08.355Z"),
        "Value" : "22"
    }, 
  ....

Таким образом, каждый документ представляет собой массив Readings, который содержит DateTimes с интервалом в 1 секунду.

Итак, если я хочу выполнить запрос между двумя датами, я пытаюсь сделать следующее в окне запроса Robomongo...

db.getCollection('Timedata').find(
 {
 'Readings.DateTime':    
    { $gt: '2005-07-13 07:42:13.355Z',  $lt: '2010-07-13 07:42:13.355Z'}        
  })

Однако это всегда возвращает Fetched 0 record(s) in 11ms, где на самом деле должно возвращаться все.

Мой синтаксис должен быть неправильным, но я просто не могу найти, что с ним не так и как искать дату и время во вложенном массиве, как здесь. У кого-нибудь есть идеи?

Заранее спасибо!


person peterc    schedule 13.07.2016    source источник


Ответы (1)


person    schedule
comment
Большое спасибо, работает отлично! Я изучу этот синтаксис, который сильно отличается от того, что я видел в документации. - person peterc; 14.07.2016
comment
На самом деле, я думаю, что, возможно, здесь я поторопился. Вышеупомянутое возвращает все документы, которые имеют какие-либо показания в течение периода времени, включая показания, выходящие за пределы фильтра. Надеялся, что есть способ, чтобы в первом и последнем документе были только показания, включенные в период времени. Возможно ли это сделать вручную? - person peterc; 14.07.2016
comment
Посмотрите обновленный ответ. Просто измените даты в полях. - person Ihor Fito; 14.07.2016
comment
Отлично, спасибо! Да, теперь результаты имеют отфильтрованные показания. - person peterc; 15.07.2016