使用Mongodb查询引用

时间:2014-03-04 01:07:05

标签: mongodb tree morphia

我将Morphia与MongoDB 2.4.9结合使用,我正在寻找一种在一个查询中查询文档引用的方法。

我读了documentation中的几个模式。 我使用以下内容来组织我的电子商务网站。我有3个系列:

  • Category
  • Product @Reference为Category
  • ProductOccurence @Reference为Product

我想要做的一个常见查询是:

查找按日期升序和状态启用排序的所有类别的产品。

有没有办法做到这一点,而不必做这样的事情:

for (Product product : findProductsByCategory(category)) {
    for (ProductOccurence o : findOccurencesByProduct(product)) {
        ocurrences.add(o);
    }
}

使用多个查询在Java中执行此操作的主要问题是,我无法按日期将我的订单应用于整个出现列表。

而且我不想在产品和产品类别中嵌入产品,因为产品数量会增加,这会导致文档大小...

1 个答案:

答案 0 :(得分:2)

查找给定类别的所有产品应该是单个查询。您可以获取生成的产品集,并在$ in查询中使用它来查找这些产品的所有出现。这也是一个查询。 $ in运算符经过优化,因此只需要查询单个产品所需的时间就更多,即使对于非常大的产品集也是如此。如果您在产品,日期和状态上启用了合适的复合键,那么MongoDB也应该能够使用它进行排序。如果结果集不是太大,也可以在应用程序中轻松进行排序。

相关问题