MongoDB найти объект не в массиве дат

У меня есть массив объектов. У каждого объекта есть поле "дата". Как я могу найти, например, все документы, которые не имеют даты 2017-09-27, но имеют дату 2017-09-26?

Пример массива "звонков":

{ 
    "calls" : [
        {"date" : ISODate("2017-09-26T00:00:00.000+0000")}, 
        {"date" : ISODate("2017-09-28T00:00:00.000+0000")}
    ]
}

Моя неработающая попытка была:

 // day is 2017-09-27,  day before is 2017-09-26
 var day        = new Date(2017, 09, 27, 0, 0, 0);
 var dayBefore  = new Date(day);
 dayBefore.setDate(day.getDate() - 1);

 var dayBeforeStart = dayBefore;    
 dayBeforeStart.setHours(0,0,0,0);

 var dayBeforeEnd   = dayBefore;        
 dayBeforeEnd.setHours(23,59,59,999); 

  coll.find({$and:[
                   {'calls.date' : {$nin:[day]}},
                   {'calls.date' : {$lte : dayBeforeEnd,
                                    $gte : dayBeforeStart         
                                   }
                   }]

              });

0 ответов

Другие вопросы по тегам