我是来自mysql的reinspectdb的新手,我有一些使用reinspectdb的任务。
现在,我想实现一些像。。。
mysql数据库:
select *
from reservations
where
room_id = '7cc8e51d-e3fa-4d84-b7e6-9ebf8975754a' and
((reservation_start between `11-01-2018 00:00:00` and `11-30-2018 23:59:59`) OR
(reservation_end between `11-01-2018 00:00:00` and `11-30-2018 23:59:59`))
重新思考数据库:
这是使用 filter()
,感谢@peter:
r.db("myDb").table("reservations").filter(function(doc){
return
doc("room_id").eq("7cc8e51d-e3fa-4d84-b7e6-9ebf8975754a")
.and(doc("reservation_start").gt("2018-12-01T00:00:00").and(doc("reservation_start").lt("2018-12-10T23:59:59"))
.or(doc("reservation_end").gt("2018-12-01T00:00:00").and(doc("reservation_end").lt("2018-12-10T23:59:59"))))
}
)
但我不知道如何将两个日期范围的检查转换为多个日期范围之间的检查。
谢谢!
2条答案
按热度按时间i86rm4rw1#
根据您存储日期的格式:
方案1:
方案2:
提高性能的替代方法:
在预订日期创建索引:
然后使用以下查询:
ipakzgxi2#
现在我更了解你的问题了
首先要将查询转换为java:
现在,您最好使用房间id作为辅助索引:
r、 db(“mydb”).table(“预订”).indexcreate(“房间号”)
然后您可以在查询中使用:
“但我不知道如何将两个日期范围的检查转换为多个日期范围之间的检查。”
1.)创建复合数组索引
2.)使用between查询
//注意:现在,当您需要房间id时,这会变得很棘手:)