我尝试了许多不同的策略来索引我的数据,但我自己似乎无法弄清楚。
我正在建立一个关于用户及其游戏的数据库。用户可以向数据库提供他们拥有并想要交易的游戏以及他们想要拥有的游戏列表:
public class Member : EntityBase
{
public List<Game> TradeList { get; set; }
public List<Game> WishList { get; set; }
}
我正在尝试创建和索引我可以以“给我一个列表,列出所有游戏(以及相应的成员),这些游戏的 TradeList 中的游戏与我的 WishList 匹配,以及他们的 WishList 中的游戏与我的 TradeList 匹配”。 .当然,我自己排除在外。
我尝试创建一个 MultiMapIndex:
public class TradingIndex : AbstractMultiMapIndexCreationTask<TradingIndex.Result>
{
public enum ListType
{
Wishlist,
Tradelist
}
public class Result
{
public string Game { get; set; }
public string Member { get; set; }
public ListType List { get; set; }
}
public TradingIndex()
{
AddMap<Member>(members => from member in members
from game in member.TradeList
select new Result()
{
Game = game.Id,
Member = member.Id,
List = ListType.Tradelist
});
AddMap<Member>(members => from member in members
from game in member.WishList
select new Result()
{
Game = game.Id,
Member = member.Id,
List = ListType.Wishlist
});
}
}
然后像这样查询它:
db.Query<TradingIndex.Result, TradingIndex>()
.Where(g =>
(g.Game.In(gamesIWant) && g.List == TradingIndex.ListType.Tradelist)
&&
(g.Game.In(gamesITrade) && g.List == TradingIndex.ListType.Wishlist)
&&
g.Member != me.Id
)
但我无法让它发挥作用。我也看过 Map/Reduce,但我的问题似乎是让 RavenDB 给我正确的结果类型。
我希望你能得到我想要做的事情,并且能给我一些关于要研究什么的提示。