Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用mongodb设计关系数据_Mongodb_Mongodb Query_Nosql - Fatal编程技术网

用mongodb设计关系数据

用mongodb设计关系数据,mongodb,mongodb-query,nosql,Mongodb,Mongodb Query,Nosql,我正在构建一个使用Mongo的应用程序,我的背景是SQL数据库。 需要NOSQL文档专家的帮助 域关系包括: User submitted many Links Links has many Stars from different Users User starred many Links 首先,让我告诉你我需要什么样的查询 下面的“结果”并没有映射mongo模式,这正是我想要的响应 返回所有提交的链接,并带有一个标志,表明用户是否已使用该链接 返回由用户加星号的所有链接 我的第一个想法是使

我正在构建一个使用Mongo的应用程序,我的背景是SQL数据库。 需要NOSQL文档专家的帮助

域关系包括:

User submitted many Links
Links has many Stars from different Users
User starred many Links
首先,让我告诉你我需要什么样的查询

下面的“结果”并没有映射mongo模式,这正是我想要的响应

返回所有提交的链接,并带有一个标志,表明用户是否已使用该链接

返回由用户加星号的所有链接

我的第一个想法是使用链接中的嵌入文档来包含所有带星号的用户

链接架构:

{ id: MongoObjectId, url: String, stars: Number, starred: [ { userId: MongoObjectId }] }
但是通过研究文档中的长度限制,16MB我驳斥了这种方法。 那么,还有什么?使用其他收集星

星型模式

 { id: MongoObjectId, link: { url: String }, user: { id: MongoObjectId } }
这个想法很简单,复制星体内部的链接信息。缺点是,我会用相同的信息将我的数据库分解给每个启动链接的用户

恢复我所拥有的:

Links Collection 
   { id: MongoObjectId, url: String, stars: Number, starred: [ { userId: MongoObjectId }] }


Stars Collection      
   { id: MongoObjectId, link: { url: String }, user: { id: MongoObjectId } }
如何返回一个标志,指示用户是否在链接上加了星号?有更好的建模方法吗


谢谢大家。

经验法则:当你用“每句话都有很多”这个词来描述你的数据时,你应该使用关系数据库。但是@Philipp,每个真正的应用程序都包含关系数据。你是说你只能在没有关系数据的情况下使用mongo,比如日志、事件?真正的应用程序不能使用mongo db吗?感谢MongoDb并非事事如意。你读过MongoDb的DB建模文档吗?这些选项都包含了每个选项的考虑因素。嘿@wiredparie,非常感谢您的链接。我同意你的观点。但想象一下,这是强加给你的一项要求。你是如何做到的?我无法满足的第二个查询是无法对数据进行规范化,缺点是会用重复的数据破坏数据库。第一个查询,我不知道没有两个查询怎么办。可能需要发送两个查询。这是个问题吗?
 { id: MongoObjectId, link: { url: String }, user: { id: MongoObjectId } }
Links Collection 
   { id: MongoObjectId, url: String, stars: Number, starred: [ { userId: MongoObjectId }] }


Stars Collection      
   { id: MongoObjectId, link: { url: String }, user: { id: MongoObjectId } }