1

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

{_id: 1, name: 'foo', workItems: []}
{_id: 2, name: 'bar', workItems: []}

如何将指向 workItem 集合中对象的链接添加到每个用户的 workItems 数组中?

我了解直接嵌入,但某些工作项将分配给多个用户,因此我不想重复数据。我查看了mongodb.org,但找不到任何链接示例。

4

2 回答 2

3

有时最好复制数据。MongoDB 是一个非关系型数据库。一些做事的方法是关系数据库的坏做法,但适用于非关系数据库。尽管有明显的共同点,但这确实不是同一种思维方式。

在我的工作中,我们在生产中使用它,发现读取操作复制数据既容易又快捷。这正是 MongoDB 的强大之处。当然,当一个工作项被修改时,这需要你的应用程序更新它出现的所有地方……这对于写密集型的系统可能不是一个好的解决方案。

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

于 2012-07-13T19:45:16.560 回答
2

您可以像这样执行 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"}}
于 2012-07-13T15:16:59.277 回答