Извините, если это действительно простой вопрос / вопрос noob, но я действительно новичок в переосмыслении DB, пришедшего из SQL.
(1)
Ниже приведен запрос в SQL, который я хотел преобразовать в ReThinkDb. Это может быть очень просто, но я не могу сделать это правильно.
SQL-эквивалент:
select *
from reservations
where
room_id = 'b1a7ddd3-ddfd-4624-8e85-79b47fb19f99' and
now() between reservation_start and reservation_end
Запрос RethinkDb (с ошибкой):
r.db("myDb").table("reservations").filter(function(doc){
return
doc("room_id").eq("b1a7ddd3-ddfd-4624-8e85-79b47fb19f99")
.and( r.now().between(doc("reservation_start ").date(), doc("reservation_end").date()) )
}
)
Я просто хочу вернуть бронирование, запланированное на сегодняшний день или продолжающееся, если оно уже началось, но еще не завершено (дата и время окончания).
(2)
Бронирование имеет столбец или поле для посетителей, которое представляет собой список / массив имени / адреса электронной почты:
attendees: [
{"name": "Attendee 1", "email": "attendee1@test.com"},
{"name": "Attendee 2", "email": "attendee2@test.com"},
{"name": "Attendee 3", "email": "attendee3@test.com"},
]
Я бы хотел добавить фильтр, чтобы проверить, существует ли email
в list of attendees
.
Это похоже на запрос: у электронной почты attendee2@test.com
сегодня есть заказ на room 101
.
Если запрос с электронной почтой не представляется возможным или сложным ... Я не возражаю, так как я могу выполнить проверку в моем приложении. Имеет значение эквивалент запроса rethinkdb для now() between dateColumnStart and dateColumnEnd
.
Обновление: добавлены примеры данных, хранящихся в БД (RethinkDB)
{
"attendees": [
{
"email": dummyUser101@gmail.com, »
"name": "Dummy User 101"
} ,
{
"email": dummyUser102@gmail.com, »
"name": "Dummy User 102"
}
] ,
"id": "45qum29cel0cm4ejl2obi6pttj" ,
"room_id": "7cc8e51d-e3fa-4d84-b7e6-9ebf8975754a" ,
"reservation_end": "2018-11-23T02:00:00" , //10AM (GMT8)
"reservation_start": "2018-11-19T00:00:00" , //8AM (GMT8)
"details": "Week event 8AM-10AM Test"
}
{
"attendees": [
{
"email": dummyUser103@gmail.com, »
"name": "Dummy User 103"
} ,
{
"email": dummyUser101@gmail.com, »
"name": "Dummy User 101"
} ,
{
"email": dummyUser102@gmail.com, »
"name": "Dummy User 102"
}
] ,
"id": "6ejq8h6tvlpnjiskvt4kthfmss_20181123T060000Z" ,
"room_id": "7cc8e51d-e3fa-4d84-b7e6-9ebf8975754a" ,
"reservation_end": "2018-11-23T07:00:00" , //3PM (GMT8)
"reservation_start": "2018-11-23T06:00:00" , //2PM (GMT8)
"details": "Test Reservation"
}
Спасибо!