Агрегация, группировка и проекция MongoDB - PullRequest
0 голосов
/ 25 мая 2020

Я застрял с агрегацией и проекцией в MongoDB,

я использую c# linq с драйвером mongodb ..

Мой вопрос: у меня есть список данных в mon go вот так

PartnerCode BrandCode   ItemCode
PartnerA    BrandA      ItemA
PartnerA    BrandA      ItemA
PartnerA    BrandA      ItemB
PartnerB    BrandA      ItemA
PartnerB    BrandA      ItemA

, и я хочу преобразовать в сгруппированные Parner и Brand, но у меня есть список элементов коллекции с количеством записей и последовательностью элементов с самым высоким счетом и может быть ограничено до x элементов на группу

образец ожидаемого результата:

PartnerCode BrandCode   Items
PartnerA    BrandA      [{ItemName : ItemA, Count: 2, Seq: 1}, {ItemName : ItemB, Count: 1, Seq: 2}]
PartnerB    BrandA      [{ItemName : ItemA, Count: 2, Seq: 1}]

то, что я уже сделал, это

_collection.Aggregate().Group(g => new {
                                            g.PartnerCode,
                                            g.BrandCode,
                                            g.ItemCode
                                        }, 
                                        g => new
                                        {
                                            _id = g.Key,
                                            Count = g.Count()
                                        })
                                        .SortByDescending(s => s.Count)
                                        .Limit(10)
                                        .ToListAsync();

, но он дает только x записей сгруппированных партнеров, брендов и товаров.

и я уже делаю это с

.GetCollection().Aggregate().Group(g => new
                                           {
                                               g.PartnerCode,
                                               g.BrandCode
                                           },
                                           g => new
                                           {
                                               _id = g.Key,
                                               Items = g.Select(s => s.ItemCode)
                                           });

, это дает мне результат сгруппированные Партнер и Бренд, но со всеми элементами внутри него. и я застрял с получением группы элементов с наибольшим количеством элементов последовательности и ограничивающей записью внутри нее.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...