这是我的数据模型问题。假设我有2个文档:出版商和图书。如果我的发布商可以发布很多书籍,我该如何决定是否要将书籍嵌入出版商或出版商的图书?
我不会问我是否应该嵌入vs参考,我问的是嵌入的方向。何时使用哪个方向。
答案 0 :(得分:0)
一如既往,'它取决于'
取决于您的疑问 -
如果您要主要在Book
进行搜索,我建议您使用嵌入式发布商制作一系列图书。
假设有一个类似
的架构图书强>
{
_id: ObjectId('507f191e810c19729de860ea'),
title: 'A great book',
publisher: {
_id: ObjectId('958d191e810c19629dl860io'),
name: 'A great publisher'
}
}
您可以轻松地查询:
db.books.find({publisher._id: ObjectId("958d191e810c19629dl860io")});
将返回该出版商的所有图书。
我看到的问题是你想要表达多少'关于发布者与查看book
的人。
这些数据会改变吗?出版商可以改名字吗?然后你必须浏览每本书并更新它......
或者您希望将其存储为时间点' - 即本书由xyz名称的出版商出版,因此我们不会对其进行更新。
如果您的主要查询是发布商及其图书的列表,我会颠倒以上内容:
<强>出版商强>
{
_id: ObjectId('958d191e810c19629dl860io'),
title: 'A great publisher',
books: [{
_id: ObjectId('507f191e810c19729de860ea'),
name: 'A great book'
}]
}