Я видел этот вопрос несколько раз, но не видел четких ответов. Я хотел бы написать запрос mongodb, который требует времени и сравнивает его с часами хранения. В настоящее время я конвертировал все время в минуты, то есть 9:00 AM = 540. Он отлично работает, когда часы работы магазина не превышают go после полуночи. У кого-нибудь есть решение.
пример магазина json:
{
"name": "store",
"Monday": [
{
"to": 960,
"from": 1080
},
{
"to": 1320,
"from": 1500
}
],
"Tuesday": [
{
"to": 960,
"from": 1080
},
{
"to": 1320,
"from": 1500
}
],
"Wednesday": [
{
"to": 960,
"from": 1080
},
{
"to": 1320,
"from": 1500
}
],
"Thursday": [
{
"to": 960,
"from": 1080
},
{
"to": 1320,
"from": 1500
}
],
"Friday": [
{
"to": 960,
"from": 1080
},
{
"to": 1320,
"from": 1500
}
],
"Saturday": [
{
"to": 960,
"from": 1080
},
{
"to": 1320,
"from": 1500
}
],
"Sunday": [
{
"to": 960,
"from": 1080
},
{
"to": 1320,
"from": 1500
}
],
"position": {
"lat": 34.14505,
"lng": -118.36954
},
"geometry": {
"type": "Point",
"coordinates": [
-118.36954,
34.14505
]
},
"__v": 0
}
текущий запрос:
router.get('/:second', async (req, res) => {
....
let time = timeConvertor(req.params.second);
let startdate = getDay() + '.0.to';
let endate = getDay() + '.0.from';
let secondStart = getDay() + '.1.to';
let secondEnd = getDay() + '.1.from';
let query = {
{
$or: [{
$and: [ { [secondStart] : { $lte : time }, }, { [secondEnd] : { $gte : time } } ]},
{
$and: [ { [startdate] : { $lte : time }, }, { [endate] : { $gte : time } } ]}
]
};
res.send(await resturants.find(query).toArray());
});