mongodb集合上的复杂连接和大型表上的过滤

时间:2018-03-06 14:15:56

标签: mongodb lookup

这与使用$ lookup加入多个集合以及使用$ match

过滤相关

我们有以下属性的订单产品集合:

orderProduct(基本集合)

_id
productId
qty
retailerId
supplierId
unitPrice
lineTotal

产品(依赖集合)

_id
productName
subCategoryId

零售商(从属收集)

_id
retailerName

供应商(从属收集)

_id
supplierName

现在我们需要从依赖和基本集合

进行以下连接和选择属性
orderProduct joins Product
orderProduct joins Retailer
orderProduct joins Supplier

还需要从依赖和基本集合中过滤。 上述设置的基本问题是orderProduct正在快速增长(当前大小为90K)并且$lookup花费了太多时间。此处还需要排序/限制/跳过。

当我们应用查找时,它工作正常但是当我们应用匹配时,它会减慢每次引入过滤器的速度。

有没有优雅的方法来解决这个问题?

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您想加入某些内容,MongoDB不是一个有效的选择。我会操作一个集合。因此,每个文档都需要具有执行查询的所有信息。也许,您可以在orderProduct文档中添加两个字段:

{
  orderProductId: 1,
  product: {name: "product", id: 1}
  retailer: [{id: 1, name: "Company"}],
  supplier: [{id: 1, name: "Company"}]
}