を動作していない検索これは私のモデルである:Mangooseネストされたが
UserModel = mongoose.Document & {
username: string,
password: string,
records: Record[]
};
Record: {
name: string;
date: Date;
}
問合せ:
const date = new Date();
const lastDate = new Date(date.getTime() - (30 * 24 * 60 * 60 * 1000));
UserModel.find({ "records" : { "$elemMatch": { "date" : { "$gte": lastDate } } }}, (err, userRecords: any) => {
if (err) {
return res.json({
"status": "error",
"detail": err
});
}
return res.json({
"records": userRecords
});
});
は、このクエリではなく、単に過去30日間のレコードよりも、すべてのレコードを返します。私はどこに間違っているのかを見つけることができません。
編集:上記のlastDateの "lastDate.toISOString()"を使用した後でも、私はまだすべての結果を返します。
編集: "$ filter"のような他の解決方法はテストされていませんが、それでもすべてのレコードが返されます。
'.find()'クエリは、返される配列内容を「フィルタ」しません。そのタスクは['$ filter'](https://docs.mongodb.com/manual/reference/operator/aggregation/filter/)に属します。 –
' date'が 'Records'文書に格納されている形式を確認してください。 Mongoではフィールドのフィルタ条件がフォーマットに合致しない場合は、コレクション全体を返します – Abhishek
@Abhishekそのフォーマットとして保存されています – Don