我們有一個活動日程表,這裏是什麼,我想我們的基本蒙戈架構:蒙戈DB設計活動日曆
用戶
- 用戶名
- 密碼
- 鹽
事件
- 名
- 描述
- 標籤[]
- 類別
- venue_id ...
場館
- 名
- 地址
- 祿
查詢將要完成的是:
- 不同標籤的列表(這可能是很難給出當前設計)在給定的標籤
- 事件
- 事件信息連同場地位置
- 特定活動的所有活動和場地信息
- 我附近的所有活動。需要在loc上使用地理位置索引
如果我們應該在事件中嵌套場地或使用mysql,那麼是否有任何反饋/想法?
我們有一個活動日程表,這裏是什麼,我想我們的基本蒙戈架構:蒙戈DB設計活動日曆
用戶
事件
場館
查詢將要完成的是:
如果我們應該在事件中嵌套場地或使用mysql,那麼是否有任何反饋/想法?
好的,這看起來不錯。我們來構建一些查詢。
假設集合命名的用戶,事件,地點:
插入一些虛擬事件:
db.events.insert({標籤: 「真棒」,」有趣的」, 「酷」]})
db.events.insert({標籤:[ 「甜」, 「有趣」, 「拉德」]})
製作索引(像老闆)
db.events。ensureIndex({標籤:1})
上市不同的標籤(這可能是很難給出當前設計):
不,不是很難。
db.events.distinct( 「標籤」)
[ 「真棒」, 「爽」, 「好玩」, 「拉德」, 「甜蜜蜜」]
活動在給定的標籤(你的意思是 「給定的標籤」 吧?)
db.events.find({標籤: 「好玩」})
{ 「_id」:的ObjectId( 「4ecc08c62477605df6522c97」), 「標籤」:[ 「真棒」, 「娛樂」, 「酷」]}
{ 「_id」:的ObjectId( 「4ecc08d92477605df6522c98」),「標籤」:‘甜’,‘好玩’,‘拉德’]}
事件信息與場地位置沿
你可以這樣做幾種不同的方法。一種方法是查詢事件並隨後查詢場地。使用這兩個文檔,手動加入(組合)您想要的數據。
OR
可以用於非規範化的速度提升了一下,存儲緩存場所名稱+位置(但不詳細地點,如營業時間,最大佔用,網站,電話號碼等。)( 1查詢而不是2)該方法帶有標準的非規範化警告,無法在一個地方更新數據。
特定事件的所有事件和地點信息
見上面
靠近我的所有事件。需要在loc上使用地理索引
再次查詢兩次,與上面相同的概念只是顛倒了順序。
獲取場館:
db.venues.find({LOC:{$附近:[緯度,經度]}})
使用場地IDS獲取事件:
db.events.find({地點:{$ in:[id1,id2,id3 ...]}})
一些這方面的東西可以自動爲你,如果你使用ODM來完成。
祝你好運!