2014-03-04 108 views
2

我正在使用Morphia与MongoDB 2.4.9,我正在寻找一种查询方式在一个查询中查询文档的引用。查询引用与Mongo DB

我读了documentation中的几个图案。 我用以下来组织我的电子商务网站。我有3个类别:

  • Category
  • Product拥有的Category
  • ProductOccurence一个@Reference拥有的Product

共同询问一个@Reference,我想要做的是:

查找按日期升序排列的所有类别商品g并启用状态。

是否有这样做,而不必做这样的事情的一种方式:

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

在Java中有多个查询这样做的主要问题是,我不能按日期申请我以整个发生的列表。

而且我不想嵌入产品和产品的产品出现次数的类别,因为产品的数量将增长,这将导致较大的文件的大小...

回答

2

查找所有产品给定类别应该是单个查询。您可以将产生的一组产品用于$ in查询中,以查找这些产品的所有出现情况。这也将是一个单一的查询。 $ in操作符经过优化,因此即使对于大型产品集,只需要一个产品的查询也只需要很多时间。如果您在产品,日期和状态中启用了合适的复合键,那么MongoDB应该也可以将其用于分类。如果结果集不太大,也可以轻松地在应用程序内完成排序。

+0

完美!我按类别查找所有产品密钥,然后查找产品列表中产品字段'products'设置为true的所有产品,最后,我按'date'命令。谢谢@drmirror – c4k