У меня есть данные в следующем формате. Он содержит документ для каждого участника продаж и их количество продаж за три дня в массиве.
{ "_id" : "Roger", "Sales" : [ 15, 2, 7 ] }
{ "_id" : "Sally", "Sales" : [ 11, 7, 3 ] }
{ "_id" : "Patrick", "Sales" : [ 3, 5, 9 ] }
{ "_id" : "Sarah", "Sales" : [ 9, 21, 11 ] }
{ "_id" : "Allen", "Sales" : [ 3, 9, 11 ] }
Я хотел бы вернуть имя участника продаж и продажи для тех, у кого было одинаковое количество продаж в течение как минимум двух из трех дней. Я ожидал возвращения Салли, Сары, Патрика и Аллена.
Как я могу это сделать? Я пробовал следующее, но не помогло:
db.SalesReport.aggregate([
{"$unwind":"$Sales"},
{"$group": {"$Name":"$Sales", "count":{"$sum":1}}},
{"$match": {"count":{"$gt":1}}},
])
И вы также должны сделать group на _id: {"$group": {"_id":"$Sales", "count":{"$sum":1}}}
Насколько я могу судить по вашим критериям, только «Роджер» не соответствует им на самом деле, поскольку все остальные делят «как минимум две цифры продаж» с кем-то еще. Вам действительно нужно объясниться здесь, потому что это действительно похоже на домашнее задание, и есть совершенно разные решения для решения этого либо в небольшом, либо в «реальном мире» масштабе.
@Neil Lunn: Да, это проблема, над которой я работал над финальной презентацией класса, поэтому в гораздо меньшем масштабе, чем в реальном мире. Мы должны представить классу, как мы вернем правильные результаты, то есть те, которые соответствуют как минимум двум из трех продаж. Вы правы, что я скучал по Патрику и отредактировал это выше.
Я думаю, ваш инструктор хочет, чтобы вы сами решили эту проблему. Нет смысла рассказывать о том, что кто-то решил за вас. У решения есть логический курс действий, и я предполагаю, что ваш инструктор в настоящее время пытается научить вас чему-то о сложности, учитывая различные подходы.



Зачем вам их ждать? Потому что во всех них цифра 11? Кажется, в вашем объяснении чего-то не хватает. Это вопрос домашнего задания?