【发布时间】:2016-01-29 21:32:44
【问题描述】:
我有一些餐馆,我想查询它们是否营业。查询必须跨越日界(例如上午 10:00 - 01:00)。他们的营业时间目前尚未在集合中定义,因此我可以根据此问题的答案设置架构。
但是例如,假设我有一个这样的集合:
[
{
"name": "Pete's Bar",
"hours":
{
"Sun": {
"open": "0800",
"close": "1800"
},
"Mon": {
"open": "0800",
"close": "1800"
},
"Tue": {
"open": "0800",
"close": "1800"
},
"Wed": {
"open": "closed",
"close": "closed"
},
"Thu": {
"open": "0800",
"close": "1800"
},
"Fri": {
"open": "0800",
"close": "0100"
},
"Sat": {
"open": "0800",
"close": "0100"
}
}
}
]
根据当前时间和星期几,我将如何查询数据库中当前营业的所有餐厅?我目前只是找到所有餐馆并在 python 中执行逻辑。如果可能的话,我想让 mongo 去做。再次! “小时”架构可以更改以适合答案。
【问题讨论】:
-
无法给出准确的答案,但如果你能写出js "stored procedure",我建议将每个打开和关闭时间转换为
unixtime(或“UTC”),然后你可以做if open_time <= now and now <= close_time。但是你仍然需要添加一些东西来转换不同日期的打开和关闭时间(到选择的时间戳 obj),然后根据 now_time 检查每个时间。同样,也许可以通过 js 实现,但请注意它不等同于存储过程;只是隐约相似。并且可能查询效率不高。 -
此外,必须根据 当前 日期/时间创建/计算
open_time,以便进行比较。值得尝试,但基于速度,它可能不会比您当前的“从 python 中的查询和处理中获取”方法更有效;因为查询开销仍然适用于 js-proc。 -
是的,我基本上是在查询之外执行所有这些逻辑。我不知道这两种方法之间是否存在速度差异。加上我的 python 逻辑现在可以工作了。如果它存在的话,我正在寻找银弹:)