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();