#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #mongoose
Вопрос:
Я использую $gte
и $lte
неправильно с другим условием? Я получил пустой массив, но когда я это делаю, user_email:req.bodu.user_email
я могу получить все данные.
function firstDayOfMonth() {
var d = new Date(Date.apply(null, arguments));
d.setDate(1);
return d.toISOString();
}
function tomorrowDate() {
var d = new Date();
d.setDate(d.getDate() 1)
return d.toISOString();
}
Users.find({
"user_email": req.body.user_email,
"createdAt": {
"$gte": firstDayOfMonth(),
"$lte": tomorrowDate()
}
},
function(err, response) {
if (!err) {
console.log(response)
res.json(response);
}
});
Комментарии:
1. какова ваша
firstDayOfMonth
ценность, поскольку вашеDate.now()
значение — это временная метка, а не формат даты?2. @abdul, toISOString?
3. Это зависит от вас, укажите одинаковый формат в обоих условиях, и он будет работать
4. Можете ли вы показать результат ваших обеих функций?
5.
2016-10-01T06:28:37.000Z
2016-10-10T06:28:37.146Z
Ответ №1:
Это должно работать
Я только что протестировал эти документы
/* 1 */
{
"_id" : ObjectId("57f9cc3dc4ac279a7c539d0f"),
"TechActivityId" : 0,
"LicenseId" : 0,
"created" : "2016-01-01T00:00:00.000Z",
"StateofActivity" : "State of Activity",
"TechGId" : "123121134"
}
/* 2 */
{
"_id" : ObjectId("57f9e674c4ac279a7c539d10"),
"TechActivityId" : 0,
"LicenseId" : 0,
"created" : "2016-10-10T06:28:37.146Z",
"StateofActivity" : "State of Activity",
"TechGId" : "1231234"
}
db.getCollection('hola').find({"created":{"$gte":"2016-01-01T00:00:00.000Z","$lte":"2016-10-10T06:28:37.146Z"}})
И я получаю оба документа
Комментарии:
1. У меня опечатка, хахаха
2. просто хотел указать, что если вы хотите получить дату в диапазоне двух дат, вы можете использовать $ gte и $ lt.