我找不到任何能解释mongodb如何精确搜索其数据的内部bson表示的信息,因此这可能完全不可用。我的假设是,它的工作原理与哈希表类似,在哈希表中查找文档的单个字段是固定时间。
因此,鉴于此假设,在某些情况下将数组存储为文档而不是加快对单个元素的搜索会不合理。例如,带有数组的特定文档可能如下所示:
Item
parts: [
{ _id: PARTSID1, ...data },
{ _id: PARTSID2, ...data },
]
但是,如果搜索单个数组元素(在这种情况下,通过ID来查找部分),这样存储数据就不会更快:
Item
parts:
PARTSID1: {data}
PARTSID2: {data}
我从未见过像这样的动态添加和删除字段的事情,所以我很好奇为什么没人这么做。