如果我在用户集合中有两个对象:
{_id: 1, name: 'foo', workItems: []}
{_id: 2, name: 'bar', workItems: []}
如何将workItem集合中对象的链接添加到每个用户的workItems数组中?
我理解直接嵌入但是一些workItems将被分配给多个用户,因此我不想复制数据。我看过mongodb.org,但我找不到任何关联的例子。
答案 0 :(得分:3)
有时复制数据会更好。 MongoDB是一个非关系型数据库。做事的一些方法是关系数据库的坏习惯,但非关系数据库。即使有明显的共同点,这实际上也不是同样的思维方式。
在我的工作中,我们在生产中使用它,发现读取操作复制数据既简单又快捷。这正是MongoDB的力量所在。 当然,当修改工作项时,这需要您的应用程序更新它出现的所有位置......对于写密集的系统来说,这可能不是一个好的解决方案。
另一点是引擎不处理关节,因此您必须至少发出第二个请求。然后,您必须在应用程序端手动执行联合。无论哪种方式,您都必须将逻辑从数据库移动到客户端应用程序。
答案 1 :(得分: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"}}