Я борюсь за создание простого индекса с ravendb.Индекс с двумя коллекциями
Учитывая две коллекции документов:
пользователей (34000 Docs) и BlogEntries (1,5 млн Docs)
1) Как я могу создать индекс, который показывает количество записей в блоге для каждого пользователя?
Отношения коллекции выглядит следующим образом:
User.LastName + «» + User.FirstName = Blog.CreatedBy
Немаловажным является тот факт, что BlogEntries содержит старые записи, которые не связаны с пользователем коллекция. Я хочу отфильтровать эти записи, чтобы они не отображались в индексе. Вот почему мне нужна коллекция пользователей здесь.
Образец данных:
User Collection:
User U1
User U2
BlogEntry Collection:
BlogEntry B1 -> U1
BlogEntry B2 -> U1
BlogEntry B3 -> U2
BlogEntry B4 -> XYZ1
BlogEntry B5 -> XYZ2
BlogEntry B6 -> U1
Я хочу, чтобы отфильтровать В4 и В5 записи, потому что они не связаны с пользователем в коллекции пользователя.
2) Должен ли я использовать для этого индекс мультимаров?
3) Я уже пробовал следующее через студию управления, но индекс не работает. Кажется, я не могу использовать две коллекции документов в одном блоке карты.
Карта:
from user in docs.Users
from blog in docs.Blogs
where blog.CreatedBy = user.LastName + "," + user.FirstName
select new { UserName = user.LastName ..., Count = 1 }
Сокращать
from result in results group by result.UserName
into g
select new { User = g.Key, g.Sum(x => x.Count) }
Спасибо, Мариуса
Привет, Thomas, я забыл упомянуть, что блоги содержат не только записи, относящиеся к пользователям. Не спрашивай меня, почему. Я думаю, что они старые записи, полученные из миграции данных много лет назад. Итак, в основном я хочу отфильтровать старые записи. Я изменю свой первоначальный пост. – Marius
Я обновил свой ответ –
Спасибо, Томас. После создания индекса, что содержит индекс? Все записи в блогах, сгруппированные по UserName? Проблема в том, что BlogEntry.CreatedBy не всегда содержит пользователя, который находится в коллекции пользователей. – Marius