Indexing RavenDB在字典上创建静态索引和查询
我试图创建一个静态索引,我希望所有文档都有一个键,并且有一个值。值本身并不重要,只有键存在 我正在用动态字段探索这个示例: 。。。虽然我正在使索引工作,但我不确定我使用的查询是否正确 这是示例类:Indexing RavenDB在字典上创建静态索引和查询,indexing,ravendb,Indexing,Ravendb,我试图创建一个静态索引,我希望所有文档都有一个键,并且有一个值。值本身并不重要,只有键存在 我正在用动态字段探索这个示例: 。。。虽然我正在使索引工作,但我不确定我使用的查询是否正确 这是示例类: public class Result { public Dictionary<string, List<Data>> Results { get; set; } } 我使用的索引如下: public class Result_ByUserId : Abstract
public class Result
{
public Dictionary<string, List<Data>> Results { get; set; }
}
我使用的索引如下:
public class Result_ByUserId : AbstractIndexCreationTask<Result>
{
public Result_ByUserId()
{
Map = res => from r in res
select new
{
_ = r.Results
.Select(d => CreateField(d.Key, d.Value))
};
}
}
公共类结果\u ByUserId:AbstractIndexCreationTask
{
公共结果_ByUserId()
{
Map=res=>从r到res
选择新的
{
_=r.结果
.Select(d=>CreateField(d.Key,d.Value))
};
}
}
我的问题归结到查询,因为它假设我想要查看特定的键和值
var resultat = session.Advanced.DocumentQuery<Result>("Result/ByUserId ")
.WhereEquals("user/1", "") // How do I write a !isNullOrEmpty?
.ToList();
var resultat=session.Advanced.DocumentQuery(“Result/ByUserId”)
.WhereEquals(“用户/1”,“用户”)//如何编写!是空的吗?
.ToList();
。。。我不想这么做。我只希望结果具有一个值不为null或空的键。有人有什么好的建议吗?你可以做的是根据字典是否有值来索引布尔标志,然后查询它
public class Result_ByUserId : AbstractIndexCreationTask<Result>
{
public Result_ByUserId()
{
Map = res => from r in res
select new
{
_ = r.Results
.Select(d => CreateField(d.Key, d.Value != null ? true : false, false, true))
};
}
}
公共类结果\u ByUserId:AbstractIndexCreationTask
{
公共结果_ByUserId()
{
Map=res=>从r到res
选择新的
{
_=r.结果
.Select(d=>CreateField(d.Key,d.Value!=null?true:false,false,true))
};
}
}
查询可以是:
var resultat = session.Advanced.DocumentQuery<Result>("Result/ByUserId ")
.WhereEquals("user/1", true)
.ToList();
var resultat=session.Advanced.DocumentQuery(“Result/ByUserId”)
.WhereEquals(“用户/1”,真)
.ToList();
这将返回所有结果
文档,这些文档具有字典
,键为user/1
,字典值不为空
我不确定这是最好的方法,但对我来说很有效
希望这有帮助
var resultat = session.Advanced.DocumentQuery<Result>("Result/ByUserId ")
.WhereEquals("user/1", true)
.ToList();