現在の時刻が文書の開始時刻と終了時刻の間にあるすべての文書を検索しようとしています。私は時と分に異なるフィールドを設定しました。 マイスキーマstarthourとstartminuteが文書の開始時刻と終了時刻の間にあるすべての文書を検索
const mySchema = new Schema({
startHour: { type: Number},
endHour: { type: Number},
startMinute: { type: Number},
endMinute: { type: Number}
})
私が働いていない検索クエリの下に書かれています。ここでは時間値と分の値は、HTTPクエリから来ている私は(もし
find({
$and : [
{ $or: [{starthour : { $lt: hour}},
{ $and : [ {starthour: { $eq : hour}}, {startMinute: { $gt: minute}}]}
]},
{ $or: [{endHour : { $gt: nsh}},
{ $and : [ {endhour: { $eq : hour}}, {endMinute: { $gt: minute}}]}
]},
],
})
これは、または(時間がstarthourとendhourよりもより大きく、小さい)すべての文書を返す必要があり、クエリで使用する前にintにそれらを変換しましたstarthourまたはendhourはstartminuteがminuteより大きい必要がある時間よりも時間が等しい)。
人生を楽にして、「開始日」と「終了日」を「日の分」から簡単に表現してみましょう。各時間は60分ですので、午前8時から午後5時までは「開始:480、終了:1020」となります。そして、あなたは「現在の議事録」をクエリーに表現して、それがドキュメントの範囲内にあるかどうかを確認します。時間と分を別々のフィールドでじゃまにするよりもずっと簡単です。また、ストレージの使用量も大幅に削減されています。 –
これは良い選択です。ありがとう!! –