1

У меня есть коллекция, в которой все документы в этой коллекции имеют временную метку даты и времени, которая включает время и дату.Самый эффективный способ возврата сегодняшних документов из коллекции

При использовании структуры агрегации, как я могу сказать, дайте мне значения на сегодняшний день? Следующие только дают мне записи за полночь.

db.strategy.aggregate(
    [ 
     { 
      $match: { 
      "date": new Date() 
      } 
     }, 

    ] 
); 

ответ

1

Чтобы получить документы, которые имеют значения даты и время на сегодняшний день, вам нужно создать диапазон дат запросов, когда объект start даты должен удерживать текущие часы времени даты в 00:00:00.000 (точности миллисекунды) и установить часы на сегодняшний даты до 23:59:59.999 до end переменной даты.

Например:

// Create the start date which holds the beginning of today 
var todayStart = new Date(); 
todayStart.setHours(0,0,0,0); 

// Create the end date which holds the end of today 
var todayEnd = new Date(); 
todayEnd.setHours(23,59,59,999); 

// Create the date range query object 
var query = { 
    "date": { 
     $gte: todayStart, 
     $lte: todayEnd 
    } 
}; 

// using the find() method 
db.strategy.find(query); 

Или с помощью метода aggregate() в

db.strategy.aggregate({ "$match": query }); 
+0

Спасибо за ответ, я думаю, то, что я проверял по моему вопросу, заключается в том, что я не могу применить методы даты к значению в базе данных, а затем получить простое сравнение date1 = date2. –

+0

Не стоит беспокоиться :) Это было бы сравнение равенства, которое не будет применяться в ваш случай, так как вы сравниваете значение в заданном диапазоне. – chridam

+0

Я думаю, это моя точка зрения. Я хочу проверить равенство thisDate = date(), а не thisDateTime между today.setHours (0,0,0,0) и today.setHours (23,59,59,999). Для этого первой мне нужно было бы усечь сохраненную дату, чтобы удалить время. –

0

Вы должны получить значение в диапазоне Т.е. от сегодняшней отметки времени 12AM до сегодняшней отметки времени 23:59:59.

Var d = новая дата(); var startDate = d.setHours (0,0,0); var endDate = d.setHours (23,59, 59); db.strategy.aggregate ( [ { $ спичка: { "Дата": {$ GTE: STARTDATE, $ Г: ENDDATE}} }.,

] 
);