gpt4 book ai didi

ravendb - 尝试通过索引使用集合查询 RavenDB 实体

转载 作者:行者123 更新时间:2023-12-01 04:04:47 24 4
gpt4 key购买 nike

我有一个 RavenDB mvc 应用程序,它有一个名为 Member 的文档实体。每个成员文档都有一个被视为管理员的用户列表。只有他们可以查看和管理该成员文档。在其中一个页面上,我进行了成员搜索并创建了一个索引来协助搜索。

public class Members_ByName : AbstractIndexCreationTask<Member>
{
public Members_ByName()
{
Map = members => from member in members select new {member.Title};
Indexes.Add(x => x.Title, FieldIndexing.Analyzed);
Sort(x => x.Title, SortOptions.String);
}
}

public class UserReference
{
public string Id { get; set; }
public string Name { get; set; }
}

public class Member
{
public string Id { get; set; }
public string Title { get; set; }
public ICollection<UserReference> Administrators { get; set; }
}

由于当我执行以下操作以获取成员时,用户只能查看/管理他们作为管理员的成员文档
RavenQueryStatistics stats;
var query = RavenSession.Query<Member, Members_ByName>().Statistics(out stats);
query = query.Where(x => x.Title.StartsWith("anything"));
query = query.Where(x => x.Administrators.Any(y => y.Id == CurrentUser.Id));
var list = query.OrderBy(x => x.Title).Paging(CurrentPage, Configuration.DefaultPage, CurrentPageSize).ToList();

当上面的代码运行时,我得到“字段'Administrators_Id'未编入索引,无法查询未编入索引的字段”,我理解但我试图在索引中获取管理员ID的每件事都没有工作,不知道如何让它在这一点上工作。

最佳答案

尝试这个:

    Map = members => from member in members
select new {member.Title, Administrators_Id = members.Administrators.Select(x=>x.Id)};

关于ravendb - 尝试通过索引使用集合查询 RavenDB 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10180317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com