Я использую этот вопрос, поскольку добавляю более четкое название и дополнительную информацию в сообщении. В настоящее время мой MongoDB состоит из сотен отдельных массивов в одном документе (только один элемент _id), и внутри этих массивов находится все мои данные (снимок экрана находится на изображении ниже).Как пройти сотни массивов в одном документе в MongoDB
Существует набор данных внутри каждого массива под названием «выигрыши», который показывает общий выигрыш для каждого игрока.
Так схема для MongoDB, как это:
[{
Date: "01/01/2012",
Entry ($): "2",
Id: "123456",
Link: "www.mywebsite.com",
Opponent: "Opponent"
}]
Кроме того, представляется, что все эти массивы имеют только один MongoDB уникальный идентификатор, присоединенные к ним:
Итак, я считаю, что все мои данные, хранящиеся во всех этих массивах, расположены только в одном документе, который связанный только с одним MongoDB _id.
Как бы я мог заполнить все эти множества, чтобы получить сумму выигрышей?
Я пробовал метод агрегации MongoDB через оператор $ sum с помощью методов $ group, но он не работает. Это самая близкая вещь, о которой я могу думать:
Collection.find().forEach(function(){
return db.Collection.aggregate([
{ $group: {Date:"$Date", total:{$sum:"$Winnings ($)"}}},
])
})
Но, очевидно, это не сработает. Я не нашел один метод, который может перебирать только один документ и сотни массивов. Попытка вставить parseInt внутри функции forEach также похожа на кошмар и, безусловно, не принимается в MongoDB без инструкции $ with. Даже не уверен, что forEach даже подходит для этого. Прохождение через каждый массив по отдельности так меня смущает прямо сейчас.
Вы не можете применять критерии запроса для поддокумента или массива в документе. Используйте оператор разматывания, чтобы сгладить документ и затем заполнить его. Включите образец входных и выходных данных в свой вопрос, если вам нужна помощь в запросе ... – Kar
Хорошо, спасибо. Я попробую. –
агрегат не распознается как функция. Я запускаю версию 2.6 Монго. –