我们有一个活动日程表,这里是什么,我想我们的基本蒙戈架构:蒙戈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来完成。
祝你好运!