我在MongoDB中具有以下架构,其中集合是分层的并具有图结构:
A-> B-> C-> D-> E
(集合A的字段具有对集合B中一个或多个记录的引用(或引用列表),等等)
如果我需要对所有集合进行联接(同时在集合A上应用一些过滤器),则可以使用顺序$lookup
和$unwind
对集合A进行聚合查询,因为在那里始终是从A到E的前向链接。
但是,由于从集合C到集合D的引用数量可能非常大(成千上万个),所以从D到C仅具有(单个)引用字段(而不是列表)更有意义从C到D的引用。在这种情况下,该图变为:
A-> B-> C <-D-> E
我是否仍可以对集合A进行单个查询并加入所有集合直到E? MongoDB是否有某种方式执行反向查找(从与集合C相关联的集合D中获取所有记录)?