#node.js #mongodb #date #mongoose
#node.js #mongodb #Дата #мангуст
Вопрос:
Я хочу обновить текущую дату в форме гггг-мм-дд, чтобы я мог запросить ее позже, но я не могу вставить дату в требуемом формате.вот что я делал до
const sampleSchema = new mongoose.Schema({ username:String, date:{ type:Date } }); const Sample = new mongoose.model("Sample", sampleSchema); let currentDate=new Date const sample = new Sample({ username:req.body.username, date:currentDate.toISOString().split("T")[0] }); sample.save()
Я понимаю это
{ "_id": { "$oid": "61b5862c6ff7ff297ae97d0c" }, "user": "username", "date": { "$date": "2021-12-12T00:00:00.000Z" }, "__v": 0 }
Мне нужна дата в формате гггг-мм-дд.
Комментарии:
1. это стандартный формат ISO, и mongodb хранит дату только в формате ISO, для вашего настраиваемого формата вы можете изменить тип поля с даты на строку и сохранить нужный формат.
2. как я могу запросить его в пределах двух диапазонов с помощью мангуста?
3. использование
$gt
$gte
операторов ,$lte
,$lt
и.
Ответ №1:
Использовать moment.js чтобы преобразовать дату в формате ISO в обычную дату в формате ГГГГ-ММ-ДД, не пытайтесь хранить свой собственный формат даты в MongoDB, потому что это создает проблемы при запросе данных на основе даты и времени. Поэтому обновите его в ISO, а затем преобразуйте в другой формат на серверной части
Преобразование даты форматирования ISO в ГГГГ ММ ДД
date = new Date('2013-08-03T02:00:00Z'); date = moment(date).format('YYYY MM DD'); //result 2013 08 03
Преобразование формата ГГГГ ММ ДД в формат IOS
date = new Date('2013-08-03'); date = moment(date).format();
Еще одна вещь, которую пользователи могут сделать, — это хранить данные в виде строки и использовать операторы $gt, $gte, $lte и $lt для запросов