有了這個簡單的例子 (使用短的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
是某種特殊的?
謝謝。