RavenDB查询无法正常工作

时间:2014-07-18 11:00:28

标签: ravendb

我似乎无法让它发挥作用。

基本上我有一个网站列出了被排除的品牌和类别。它们存放像品牌/ 1类/ 123

我正在尝试查询我的产品文档,并返回前20个没有任何排除类别/品牌的结果。

using (var session = documentStore.OpenSession())
 {
      var site = session.Load<Site>(193);


      List<string> excludedCategories =  session.Load<Category>(site.ExcludedCategories).Select(a => string.Format("brands/{0}",a.Id)).ToList();
      var excludedBrands = session.Load<Brand>(site.ExcludedBrands).Select(a => string.Format("categories/{0}",a.Id)).ToList();


      List<Product> ps = session.Query<Product>()
                                .Where(prod => excludedBrands.Any(a => !prod.Brands.Contains(a)) 
                                            && excludedCategories.Any(a => !prod.Categories.Contains(a)))
                                .OrderBy(a=>a.ProductGroup)
                                .Take(20)
                                .ToList();
}

任何人都知道我是否在正确的位置?

目前收到以下错误:

Lucene.Net.QueryParsers.ParseException:无法解析:'( AND)AND - ( AND)'---&gt; Lucene.Net.QueryParsers.ParseException:无法解析'( AND)AND - ( AND)':遇到“”)“”)“”在第1行,第8栏。 期待以下之一:      ...     “+”......     “ - ”......     “(”......     “”......      ...      ...      ...      ...     “[”......     “{”......      ...      ...     “”......      ---&GT; Lucene.Net.QueryParsers.ParseException:遇到“”)“”)“”在第1行第8列。 期待以下之一:      ...     “+”......     “ - ”......     “(”......     “*”......      ...      ...      ...      ...     “[”......     “{”......      ...      ...

1 个答案:

答案 0 :(得分:1)

在查询期间,您无法执行包含需要计算且不使用索引的操作。 像这样使用查询:

  List<Product> ps = session.Query<Product>()
                            .Where(prod => !prod.Brands.In(excludedBrands) && 
                            !prod.Categories.In(excludedCategories))
                            .OrderBy(a=>a.ProductGroup)
                            .Take(20)
                            .ToList();

如果您仍有问题,请在查询中调用ToString()并查看其实际功能。