Verwenden von Mongoose Ich versuche, Daten aus meiner Datenbank basierend auf einem Datum auszuwählen. In meinem Fall ein Konto, auf das seit mehr als einer Stunde nicht zugegriffen wurde.MongoDB Datum Vergleichsprobleme
Ich bin keine Ergebnisse erhalten, wenn die Abfrage ausgeführt wird:
db.accounts.findOne({ "last_used": { "$lte": "2016-05-26T09:31:08.480Z" }})
Hier ist mein Code:
bin/App.js
import AccountModel from '../Models/Account';
let lastHour = new Date();
lastHour.setHours(lastHour.getHours() - 1);
let query = {
"last_used": {
"$lte" : ISODate(lastHour)
}
};
// Get account that was last used at least an hour ago
AccountModel.findOne(query, function(err, account) {
if(err) throw new Error(err);
console.log(account);
});
Modelle/AccountModel.js
import Mongoose from 'mongoose';
export default Mongoose.model('Account', new Mongoose.Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
username: { type: String, required: true, unique: true },
date_added: { type: Date, default: Date.now },
last_used: { type: Date, default: Date.now } }
));
db.accounts.find()
{
"_id" : ObjectId("574555d0348bc17a1ab67f2c"),
"username" : "testuser",
"email" : "[email protected]",
"password" : "SOMEHASH",
"last_used" : ISODate("2016-05-24T08:13:41.080Z"),
"date_added" : ISODate("2016-05-24T07:35:44.121Z"),
"__v" : 0
}
Die erste Abfrage das Ergebnis zieht oben werden soll, weil es eine Stunde zugegriffen vor mehr als zuletzt.
Irgendwelche Ideen auf denen ich falsch liege?
Haben Sie 'neues Datum (lastHour)' 'in der Suchabfrage probiert? – Shrabanee
Keine Notwendigkeit, die JS-Datumsinstanz mit 'ISODate' zu umbrechen, da 'new Date()' das aktuelle Datum als ein Date-Objekt zurückgibt, das das ISO-Datumsformat unterstützt, einfach mit diesem Datum abfragen 'lassen Sie query = {"last_used": { "$ lte": lastHour}}; ' – chridam
@chridam das gleiche Problem, funktioniert immer noch nicht. – love2node