Вот входные данные в Mongodb:
{
"_id" : ObjectId("5bb17bbd5b87d9a705583bb7"),
"neighborhood" : "Garrison",
"city" : "Montgomery",
"state" : "Alabama",
"country" : "United States",
"color" : "Blue"
},
{
"_id" : ObjectId("5bb17bbd5b87d9a705583bdc"),
"neighborhood" : "Harper",
"city" : "Austin",
"state" : "Texas",
"country" : "United States",
"color" : "Red"
}
Что я пытаюсь получить примерно так:
Result.json Структура
{
neighb`enter code here`orhood: {
redColor_percent: 45,
blueColor_percent:35,
greyColor_percent:10
},
city: {
redColor_percent: 45,
blueColor_percent:35,
greyColor_percent:10
},
state:{
redColor_percent: 45,
blueColor_percent:35,
greyColor_percent:10
},
country: {
redColor_percent: 45,
blueColor_percent:35,
greyColor_percent:10
}
}
Я могу получить счетчик цветов для каждого города, но как мне передать документы и подсчитать каждый цвет для штата?используя следующий запрос
db.getCollection('geolocations').aggregate([
{
$group: {
_id: {
country: "$country",
state: "$state",
city: "$city",
},
blueTotalCount: {$sum: {$cond: {if : {$eq: ["$color", "Blue"]},
then: 1, else: 0} } },
redTotalCount: {$sum: {$cond: {if : {$eq: ["$color", "Red"]},
then: 1, else: 0} } },
grayTotalCount: {$sum: {$cond: {if : {$eq: ["$color", "Gray" ]},
then: 1, else: 0} } }
}}
output:
{
"_id" : {
"country" : "United States",
"state" : "Colorado"
},
"cities" : [
{
"city" : "Denver",
"blue" : 15.0,
"red" : 9.0,
"gray" : 4.0
},
{
"city" : "Boulder",
"blue" : 4.0,
"red" : 3.0,
"gray" : 2.0
},
{
"city" : "Colorado Springs",
"blue" : 0.0,
"red" : 5.0,
"gray" : 2.0
}
]
}
так что теперь, как мне теперь $сумма каждого цвета для государства?Спасибо!