Die Antwort auf Ihre andere Frage sollte das richtige Ergebnis zurückgeben. Ich möchte auch betonen, dass es besser ist, das Datum als Datumsobjekt zu speichern.
Lassen Sie uns einen anderen Ansatz versuchen, indem wir $dateFromString
verwenden auch auf die Eingabewerte.
tableReportdata.find({
$expr: {
$and: [
{
$gte: [
{
$dateFromString: {
dateString: "$todaydate",
format: "%d-%m-%Y",
timezone: "UTC"
}
},
{
$dateFromString: {
dateString: "01-06-2020",
format: "%d-%m-%Y",
timezone: "UTC"
}
}
]
},
{
$lte: [
{
$dateFromString: {
dateString: "$todaydate",
format: "%d-%m-%Y",
timezone: "UTC"
}
},
{
$dateFromString: {
dateString: "07-06-2020",
format: "%d-%m-%Y",
timezone: "UTC"
}
}
]
}
]
}
}, function(err, docs) {
if (err) {
console.log(err);
return;
} else {
console.log("Successful loaded report data");
res.json({ data: docs, msg: 'Report data loaded.' });
}
});
Kürzere Version mit Hilfsfunktion
const dateUTCexpr = (dateString) => ({
$dateFromString: {
dateString,
format: "%d-%m-%Y",
timezone: "UTC"
}
})
tableReportdata.find({
$expr: {
$and: [
{
$gte: [dateUTCexpr("$todaydate"), dateUTCexpr("01-06-2020")]
},
{
$lte: [dateUTCexpr("$todaydate"), dateUTCexpr("07-06-2020")]
}
]
}
}, function(err, docs) {
if (err) {
console.log(err);
return;
} else {
console.log("Successful loaded report data");
res.json({ data: docs, msg: 'Report data loaded.' });
}
});
Wenn Sie todaydate
haben definiert als String
Stellen Sie in Ihrem Schema außerdem sicher, dass es in Ihrer Datenbank richtig konvertiert wird. Sie können den folgenden Code verwenden
const dateUTCexpr = (dateString) => ({
$dateFromString: {
dateString,
format: "%d-%m-%Y",
timezone: "UTC"
}
})
tableReportdata.find({
todaydate: {
$gte: dateUTCexpr("01-06-2020"),
$lte: dateUTCexpr("07-06-2020")
}
}, function(err, docs) {
if (err) {
console.log(err);
return;
} else {
console.log("Successful loaded report data");
res.json({ data: docs, msg: 'Report data loaded.' });
}
});