0
У меня есть следующие данные. Я хочу группировать по полям в массиве.Mongodb Group по количеству На основании полей массива
{
"_id" : ObjectId("54e73137758646882f445383"),
"items" : [
{
"name" : "one",
"quality" : "high"
},
{
"name" : "one",
"quality" : "low"
},
{
"name" : "two",
"quality" : "high"
}
]
}
/* 1 */
{
"_id" : ObjectId("54e73166758646882f445384"),
"items" : [
{
"name" : "two",
"quality" : "high"
},
{
"name" : "three",
"quality" : "low"
},
{
"name" : "four",
"quality" : "medium"
}
]
}
Я хочу сгруппировать по имени и качеству, и я хочу получить счет.
Это то, что я пытался
db.testColl.aggregate({$group : {
_id : {itemsName : "$items.name" ,itemsQuality : "$items.quality" },
count : {$sum : 1}
}})
и я получаю результат, как
{
"result" : [
{
"_id" : {
"itemsName" : [
"two",
"three",
"four"
],
"itemsQuality" : [
"high",
"low",
"medium"
]
},
"count" : 1
},
{
"_id" : {
"itemsName" : [
"one",
"one",
"two"
],
"itemsQuality" : [
"high",
"low",
"medium"
]
},
"count" : 1
}
],
"ok" : 1
}
Ожидаемый результат:
{
"result" : [
{
"_id" : {
"itemsName" : one,
"itemsQuality" : high
},
"count" : 1
},
{
"_id" : {
"itemsName" : one,
"itemsQuality" : low
},
"count" : 1
},
{
"_id" : {
"itemsName" : two,
"itemsQuality" : high
},
"count" : 2
},
....
],
"ok" : 1
}
Возможно ли это? Если это так поможет мне в этом? Если это невозможно, пожалуйста, исправьте мою структуру, чтобы достичь результата.
Thanks свою работу – Ramesh