我目前正在建立一個類似模型的酒店預訂網站的應用程序。MongoDB架構酒店預訂/房間供應
當前正在考慮處理可用性搜索的方法。
我的模型看起來有點像下面的:
酒店
_id
名
描述
STAR_RATING
地址
LAT
LON
我當時以爲有一個可用性TY集合是這樣的:
可用性
HOTEL_ID(如果可用性是它自己的集合)
日期
room_type
room_max_occupancy
價格
日期將儲存一天的房間可用
room_type將是類似「Twin」「Double」的東西
room_max_occupancy woul d是2,3等...
一個示例查詢將是:
從6月1日至8日,爲2人的房間。
對於「搜索結果」,我需要返回hotel.name,hotel.description,hotel.star_rating。
我正在尋找最有效的方式來存儲上面列出的查詢類型的這種數據?
可用性集合應該是它自己的集合還是酒店的子文檔?
如果它是自己的收藏,我應該將緯度添加到可用性(以及hotel_id)以使搜索更有效嗎?
空間效率最高(磁盤/ R AM),插入還是找到免費的房間?並且不應該有Room集合(可能包含可用/不可用時間範圍的列表)? – xeraa
你是否在意多個人同時搜索,看到可用性,然後可能無法預定是否有其他人毆打他們? –
請注意一些事情(我熟悉討論的領域):您可能需要比room_id更細的聚合來列出可用性。即:代理商優惠通常會將room_id旁邊的其他事物考慮在內以將可用性與例如:含早餐,特別多天(2 = 3天)優惠等相關聯。因此,雖然roomId可能足以作爲一種手段開始的彙總可用性,它不會讓您對潛在合作伙伴(如booking.com)的所有內容進行建模。 –