有了这个简单的例子 (使用短的ObjectId,使其更容易阅读)MongoDB模式设计:通过名称引用ID与引用?
标签文件:
{
_id: ObjectId('0001'),
name: 'JavaScript',
// other data
},
{
_id: ObjectId('0002'),
name: 'MongoDB',
// other data
},
...
假设我们需要一个单独的tag
集合,例如我们需要在每个标签上存储一些信息。
如果参考通过ID:
// a book document
{
_id: ObjectId('9876'),
title: 'MEAN Web Development',
tags: [ObjectId('0001'), ObjectId('0002'), ...]
}
如果参考通过名称:
{
_id: ObjectId('9876'),
title: 'MEAN Web Development',
tags: ['JavaScript', 'MongoDB', ...]
}
据了解, “通过参考ID” 是可行的。
我在想,如果使用“按名称引用”,对书中的信息查询只需要在book
集合中找到,我们就可以知道没有加入($lookup
)操作,这应该是更快的标签的名称。
如果应用程序在创建和修改图书之前执行标记检查,这应该也是可行的,并且更快。
我仍然不很肯定:
- 是否有关于“按名称引用”任何藏起来?
- 在“查找所有带有给定标签的书籍”时,“名称引用”会更慢吗?也许
ObjectId
是某种特殊的?
谢谢。