TLDR;将两种不同类型的文档放在同一个集合中以节省到数据库的往返行程是否有缺点?
所以我有孩子的文档,以及父母中引用孩子的键列表,几乎每当我们想要父母时,我们也希望孩子们一起来。最简单的方法是获取父节点,然后使用带有 $IN 的子键列表获取子节点(在 SQL 中,我们将使用连接)。但是,这意味着为相当频繁的操作进行 2 次往返。我们有几个选项可以改进这一点,特别是因为我们可以在检索父键的同时检索子键:
将孩子放在父文档中
虽然这会发挥 mongo 的优势,但我们也希望保持这些数据标准化
线程中的管道数据库请求
一旦我们将连接池考虑在内,这可能会或可能不会提高性能。这也意味着在 python 应用程序中处理线程,这并不可怕,但也不是很好。
将父/子文档保存在同一个集合中(不嵌入)
这样我们就可以一次查询所有的键;这确实意味着包装器中用于访问数据库的一些概念开销,并强制所有索引都是稀疏的,但否则看起来很简单。
我们可以分析所有这些选项,但尽管没有在网上找到任何东西,但确实感觉那里的人应该已经有了这方面的经验。那么,我的分析中是否遗漏了什么?