私は「フィルタリング」システムを構築しており、生年月日が2日のコレクションのユーザーを照会する必要があります。 (エラーなし)空の配列が返されるMongoDBでプレーンテキストと書式YYYY-MM-DDとして保存されている日付を照会
if (req.query.ageMin) {
var dobMin = new Date(dateNow.setFullYear(dateNow.getFullYear() - req.query.ageMin));
}
if (req.query.ageMax) {
var dobMax = dateNow.setFullYear(dateNow.getFullYear() - req.query.ageMax);
}
if (dobMin && dobMax) {
query.dob = {
$gte: dobMin,
$lt: dobMax
}
} else if (dobMin) {
query.dob = {
$gte: dobMin
}
} else if (dobMax) {
query.dob = {
$lt: dobMax
}
}
db.users.find(query).toArray(function (err, users) {
console.log(users);
});
:
私が今持っているコードは次のようになります。 コレクション内の日付が日付オブジェクトではないことが前提です。それらは単に "1980-06-15"のような文字列です。 クエリに渡すことができるオプションはありますか?Mongoはクエリを実行するときに、保存された日付に日付オブジェクトを作成させますか?またはそのことについては、解決策...
* dateNow *あなたは 'dateNow.setFullYear(...)を行うときに'あなたは、プレーンなJS日付である場合* dateNow *の値を変更します。したがって、2016年に18と20の間の人を探しているならば、* dobMin *は1998年になり、* dobMax *は1978年になります。* setFullYear *はDateではなく時間値を返します。* dobMax *一方、* dobMin *は日付です。比較演算子を使用した比較は、日付を強制的に数字に変換するために機能します。 – RobG
良いキャッチは、実際にそれをキャッチし、同様にdobMaxに新しいDate()関数を追加しました。情報をありがとう。 –