Mongodb Mongdb数据库设计

Mongodb Mongdb数据库设计,mongodb,database,Mongodb,Database,我正在开发一个应用程序,我选择mongodb作为数据库主要是因为它的灵活性和查询地理空间数据的能力。但是我在设计方面有点老派(读“关系数据库”),我想了解一些关于如何设计数据库的提示,使其最适合我的需要 我有一个用户模型,比如说一个对象项。每个用户都有一个位置(可以随时间快速变化)。对象项也有一个位置,并且属于用户。 现在我有点像在MySql中一样开发数据库: *具有对象ID数组的用户表 *引用所有者(用户)ID的对象表 由于我需要经常查询每个模型的位置,并进行一些范围查询(哪些对象距离此用户不

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

我有一个用户模型,比如说一个对象项。每个用户都有一个位置(可以随时间快速变化)。对象项也有一个位置,并且属于用户。 现在我有点像在MySql中一样开发数据库: *具有对象ID数组的用户表 *引用所有者(用户)ID的对象表

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

谢谢。

根据我的意见:

步骤1:您可以使用三种不同的集合。第一个是用户,第二个是位置,最后一个是项目(以及用户ID)

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

第3步:就好像物品和用户的位置在移动,这样您就可以在位置集合中保存(用户和物品)坐标

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

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

这只是我的意见。谢谢。

根据我的意见:

步骤1:您可以使用三种不同的集合。第一个是用户,第二个是位置,最后一个是项目(以及用户ID)

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

第3步:就好像物品和用户的位置在移动,这样您就可以在位置集合中保存(用户和物品)坐标

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

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


这只是我的意见。谢谢。

由于两者都经常更改,我希望有单独的集合,并在对象文档中有用户的引用。更新这些对象将非常容易,查询它们(通过userId和geoloc)将非常容易。将它们拆分可以让您在不降低性能的情况下频繁更新它们!如果您不了解本指南,我建议您阅读:我想补充一点,这也取决于您的用例,但据我所知,我怀疑您是否希望在每次查看对象时都返回用户文档,因此在这种情况下,在用户中嵌入对象并不相关,因为两者都会频繁更改,我倾向于拥有独立的集合,并在对象文档中拥有用户的引用。更新这些对象将非常容易,查询它们(通过userId和geoloc)将非常容易。将它们拆分可以让您在不降低性能的情况下频繁更新它们!如果您不了解本指南,我建议您阅读:我想补充一点,这也取决于您的用例,但据我所知,我怀疑您是否希望在每次查看对象时返回用户文档,因此在这种情况下,在用户中嵌入对象是不相关的