Предположим, у нас есть следующая коллекция
[
{
'item' : 'A',
'colors' : [
'a1', 'a2', 'a3'
]
},
{
'item' : 'B',
'colors' : [
'b1', 'b2', 'b3'
]
},
{
'item' : 'A',
'colors' : [
'c1', 'c2', 'c3'
]
},
{
'item' : 'A',
'colors' : [
'd1', 'd2', 'd3'
]
}
]
Я хочу получить отдельные значения для каждого типа поля. Например, в приведенной выше коллекции я хочу получить следующий результат:
[
{
'item' : 'A',
'colors' : [
'a1', 'a2', 'a3','c1', 'c2', 'c3','d1', 'd2', 'd3'
]
},
{
'item' : 'B',
'colors' : [
'b1', 'b2', 'b3'
]
}
]
Я попробовал выполнить следующий запрос: db.collection.aggregate([{$group:{_id:'$item',colors:{$addToSet : '$colors'}}}])
. Но при этом добавляется каждый отдельный список, а не создается один список только значений. Примерно так.
[
{
'item' : 'A',
'colors' : [
['a1', 'a2', 'a3'],['c1', 'c2', 'c3'],['d1', 'd2', 'd3']
]
},
{
'item' : 'B',
'colors' : [
'b1', 'b2', 'b3'
]
}
]
Что мне изменить в моем запросе? Заранее большое спасибо за вашу помощь.