Найти данные с даты в MongoDB - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть некоторые данные в MongoDB, я хочу найти данные для конкретной даты, но в БД они хранятся в формате ISODate () со временем, как-то так,

{ 
"_id": ObjectId("5e578771cd0d3b7660deb7ca"),
  "updatedAt": ISODate("2020-02-27T16:38:20.444+0000"),
  "createdAt": ISODate("2020-02-27T16:38:20.444+0000")
}

Но я хочу получить это сделать c. используя только строковую дату, Like, db.collection.find ({созданный: "2020-02-27"});

Я пытался сделать это, создав диапазон,

setFream1 = new Date(new Date("2020-02-27").setHours(0,0,0,0));
setFream2 = new Date(new Date("2020-02-27").setHours(23,59,59,999));


db.collection.find({ createdAt: { $gte: new Date(setFream1), $lte: new Date(setFream2) } });

Я думаю, что это будет работать, но есть ли другой способ лучше. Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Я бы порекомендовал Момент. js:

db.collection.find(
   {
      createdAt: {
         $gte: moment("2020-02-27").startOf("day").toDate(),
         $lte: moment("2020-02-27").endOf("day").toDate()
      }
   }
);
0 голосов
/ 27 февраля 2020

Самый простой и оптимизированный подход - использовать для этого библиотеку moment.

Вы можете установить moment, используя это:

npm i moment

Затем потребуйте это следующим образом:

var moment=require("moment");

Тогда используйте это так:

setFream1=moment("2020-02-27 00:00:00.000").utc().format("YYYY-MM-DDTHH:mm:ss.SSS[Z]");
setFream2 =moment("2020-02-27 23:59:59.999").utc().format("YYYY-MM-DDTHH:mm:ss.SSS[Z]");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...