0
我是RavenDB的新手,我正在努力解决这个简单的问题。 我有一个拥有订阅集合的订阅者。我想通过订阅的字段进行搜索,并返回相关的订阅者。通过RavenDB中的嵌套集合元素查询条目
下面是简单的例子类:
public class Subscriber
{
public string Email { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public List<Subscription> Subscriptions { get; set; }
}
public class Subscription
{
public Guid Id { get; set; }
public string EventType { get; set; }
}
我试图让一个索引,因为它是在RavenDB文档说:
public class Subscriber_BySubscription : AbstractIndexCreationTask<Subscriber>
{
public Subscriber_BySubscription()
{
Map = subscribers => from subscriber in subscribers
from subscription in subscriber.Subscriptions
select new
{
subscription.EventType,
subscription.QueueName
};
}
}
但我不知道这是我需要什么,因为使用Select
和Contains
收集查询不起作用。此外,代码看起来非常难看,我觉得这不是它应该如何的方式。
所以,我想通过EventType查询订阅,并有相应的订阅者作为结果。在LINQ中,它看起来是这样的:subscribers.Where(x => x.Subscriptions.Select(c => c.EventType).Contains(myEventType))
请注意,这会更好: '地图=用户=>从用户在用户 选择新 {EventType = subscriber.Subscriptions.Select(x => x.EventType) };' 这会为每个文档生成一个值,从而避免扇出 –