如何将RavenDB索引编写为预先过滤的文档列表,而不是可搜索的

时间:2013-04-19 13:28:20

标签: ravendb

我想获取一个由属性(字符串)过滤的用户列表为空或空。

我为此创建了一个索引,但我不确定我实现它的方式是否正确。

public class Users_Contributors : AbstractIndexCreationTask<User>
{
    public Users_Contributors()
    {
        Map = users => from user in users
                       where user.ContributionDescription != null && user.ContributionDescription != "" 
                       select new {};
    }
}

所以我只想让乌鸦为我准备“用户名单”。我只是要从该索引中获取所有用户对象,而不需要额外的过滤/查询时的标准。

上面的代码是可行的还是我能以更好的方式实现相同的目标?我觉得我在这里缺少一些东西。谢谢!

1 个答案:

答案 0 :(得分:2)

这样可以正常工作。结果是索引仅包含在ContributionDescription字段中包含某些内容的用户。

如果您想让它更容易阅读,可以使用string.IsNullOrEmpty,但这不会对性能产生任何影响。

Map = users => from user in users
               where !string.IsNullOrEmpty(user.ContributionDescription)
               select new {};

由于最后的空对象,它可能感觉很奇怪,但这只是定义了索引条目。如果您没有按任何其他字段排序或过滤,那么使用空对象就可以了。请记住,无论您映射的是哪个字段,都会创建__document_id条目。