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
Javascript mongodb中链接文档的语法_Javascript_Mongodb_Bson - Fatal编程技术网

Javascript mongodb中链接文档的语法

Javascript mongodb中链接文档的语法,javascript,mongodb,bson,Javascript,Mongodb,Bson,如果用户集合中有两个对象: {_id: 1, name: 'foo', workItems: []} {_id: 2, name: 'bar', workItems: []} 如何将指向workItem集合中对象的链接添加到每个用户的workItems数组中 我理解直接嵌入,但一些工作项将分配给多个用户,所以我不想重复数据。我已经看过了,但是我找不到任何链接的例子 您可以执行如下DBRef: { $ref : <name of collection where reference is&

如果用户集合中有两个对象:

{_id: 1, name: 'foo', workItems: []}
{_id: 2, name: 'bar', workItems: []}
如何将指向workItem集合中对象的链接添加到每个用户的workItems数组中


我理解直接嵌入,但一些工作项将分配给多个用户,所以我不想重复数据。我已经看过了,但是我找不到任何链接的例子

您可以执行如下DBRef:

{ $ref : <name of collection where reference is>, $id : <_id of document>, $db : <optional argument for specifying the databse the document is at> }
{_id: 1, name: 'foo', workItems: {$ref: "blarg", $id: "1"}}

您可以这样做DBRef:

{ $ref : <name of collection where reference is>, $id : <_id of document>, $db : <optional argument for specifying the databse the document is at> }
{_id: 1, name: 'foo', workItems: {$ref: "blarg", $id: "1"}}

有时候,最好是复制数据。MongoDB是一个非关系数据库。有些方法在关系数据库中是不好的,但在非关系数据库中是适用的。尽管有明显的共同点,但这确实不是相同的思维方式

在我的工作中,我们在生产中使用它,并发现读取操作复制数据更容易、更快。这正是MongoDB的力量所在。 当然,当修改工作项时,这需要应用程序更新它出现的所有位置。。。对于写密集型系统,这可能不是一个好的解决方案


另一点是,引擎不会处理关节,因此您必须至少发出第二个请求。然后,您必须在应用程序端手动执行连接。无论哪种方式,您都必须将逻辑从数据库移动到客户机应用程序。

有时复制数据会更好。MongoDB是一个非关系数据库。有些方法在关系数据库中是不好的,但在非关系数据库中是适用的。尽管有明显的共同点,但这确实不是相同的思维方式

在我的工作中,我们在生产中使用它,并发现读取操作复制数据更容易、更快。这正是MongoDB的力量所在。 当然,当修改工作项时,这需要应用程序更新它出现的所有位置。。。对于写密集型系统,这可能不是一个好的解决方案


另一点是,引擎不会处理关节,因此您必须至少发出第二个请求。然后,您必须在应用程序端手动执行连接。无论哪种方式,您都必须将逻辑从数据库移动到客户端应用程序。

或者,您可以只在数组中存储每个工作项的_id或其他唯一标识符-链接可以是“逻辑的”。确切地说,为了澄清Aysa的答案,你只需提出多个问题。正如jtlebi所说,不管怎样,你都必须提出两个问题,你最好让它可读。谢谢,这正是我想要的,这很有意义,我试图想出一些“神奇”的方式来链接数据,而不仅仅是指定集合和文档id。多亏了其他注释和jtlebi的回答,这也是一个很好的答案。或者,你可以只存储数组中每个工作项的"id或其他唯一标识符-链接可以是“逻辑的”.确切地说,为了澄清Aysa的答案,你可以提出多个问题。正如jtlebi所说的-你必须提出两个问题,不管怎样,你都可以让它可读。谢谢,这就是我想要的,这是有意义的,我试图想出一些“神奇”的方式来链接数据,而不仅仅是指定集合和文档id。感谢其他评论和jtlebi的回答,这也是一个很好的答案。