Mongdb数据库设计

时间:2015-10-16 18:40:31

标签: mongodb database

我正在开发一个应用程序,我选择mongodb作为数据库主要是因为它的灵活性和查询地理空间数据的能力。但我倾向于在设计方面有点老派(阅读'关系数据库')并且我想了解如何设计我的数据库的一些提示,以便最符合我的需要。

我有一个User模型,让我们说一个Object项。每个用户都有一个位置(可以随时间快速变化)。 Object项也有一个位置,属于User。 现在我开发了我的数据库,就像我在MySql中做的那样:  *具有对象ID数组的User表  *一个Object表,其中包含对所有者(用户)ID的引用。

由于我需要经常查询每个模型的位置并进行一些范围查询(哪个对象距离这个用户等100米以内),这是一个好的设计吗?我主要关心的是位置查询。我知道我可以在该位置放置一个索引,但我不想在用户和同一个表上的用户的Object数组上放置两个索引位置。 另一个特点是我肯定会对我的数据库进行一些分片,根据我在mongodb上读到的内容,我想我会在位置索引(主要是用户)上进行分片。 这是否有意义,还是我真的应该采用一刀切的方法?或者你有另外一种设计会更好吗?

感谢。

1 个答案:

答案 0 :(得分:0)

根据我的意见:

步骤1:您可以使用三个不同的集合。用户的第一个是“位置”,最后一个是“ ITEMS”(带有用户ID)。

步骤2::在您的位置信息集中,您可以保存由两种不同类型区分的位置的两个坐标。例如,对于用户位置,您可以将类型设置为“ USER_LOC”,对于对象(项目)位置,可以将类型设置为“ ITEM_LOC”,以及用户ID和ITEM ID()。

步骤3:就像ITEM和USERS位置正在移动一样,因此您可以将(用户和项目)坐标保存在位置集中。

第4步::您可以将项目和用户的最后坐标保存在各自的集合中。

步骤:5 根据您的查询,如果您要获取X米距离内与用户接近的物品,那么您可以仅针对ITEM类型过滤位置集合,并且拥有用户的最后一个坐标在USER集合本身中。因此,您可以找到在特定距离内靠近用户当前位置的项目列表。

这只是我的意见。谢谢。