Mongooseの使用データベースから日付に基づいてデータを選択しようとしています。私の場合、1時間以上でアクセスされていないアカウント。MongoDB日付の比較問題
クエリを実行しているとき、私は何も結果を得ていないのです。
db.accounts.findOne({ "last_used": { "$lte": "2016-05-26T09:31:08.480Z" }})
はここに私のコードです:
ビン/ 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);
});
モデル/ 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
}
最初のクエリは、それが時間以上前に最後にアクセスされたため、上記の結果を引っ張っされるべきです。
私は間違っていますか?
検索クエリで 'new Date(lastHour)'を試しましたか? – Shrabanee
'new date()'として 'ISODate'を使ってJS日付インスタンスをラップする必要はありません。ISO日付フォーマットをサポートするDateオブジェクトとして現在の日付を返します。' let query = {"last_used":{ "$ lte":lastHour}}; ' – chridam
@chridam同じ問題は、まだ動作しません。 – love2node