如何在RavenDB上查询子元素?

时间:2015-07-12 18:52:55

标签: c# .net database ravendb

我正在尝试查询嵌入在.NET中的RavenDB中的子元素,文本搜索工作,但WhereBetweenOrEqual,WhereGreaterThan,WhereLessThan无法正常工作

我的代码:

public class Document
{
    public string Id { set; get; }
    public IEnumerable<Attribute> Attributes { set; get; } 
}

public class Attribute
{
    public string Key { set; get; }
    public object Value { set; get; }
}

抽象索引类

public class Document_ByAttribute : AbstractIndexCreationTask<Document>
{
    public Document_ByAttribute()
    {
        Map = documents => from doc in documents
                          select new
                          {
                              _ = doc.Attributes
                                 .Select(attribute =>
                                     CreateField(attribute.Key, attribute.Value, false, true))
                          };
    }
}

这是工作

    public ActionResult Filter(string id)
    {
        var doc = _Session.Advanced.LuceneQuery<Document>("Document/ByAttribute").Search("Title", "*" + id + "*").ToList();
        return Json(doc, JsonRequestBehavior.AllowGet); 
    }

此功能无效

    public ActionResult Price_Range(decimal min = 0, decimal max = 99999999)
    {
        var doc = _Session.Advanced.LuceneQuery<Document>("Document/ByAttribute").WhereBetweenOrEqual("Price", min, max).ToList();
        return Json(doc, JsonRequestBehavior.AllowGet); 
    }

我已经尝试了一切。我没有成功。 请帮我。怎么办?

提前致谢。

1 个答案:

答案 0 :(得分:0)

可能的问题是类型。 您传递的是小数,但服务器上的值是以其他方式解释的(可能是float或int)。确保那些匹配。