Така че вашето агрегиране всъщност връща всички comment
документи в resultField
поле, което имплицитно съдържа броя на резултатите, то е част от която можете да проверите дължината в Go с помощта на вградения len()
функция.
Тъй като имате нужда само от дължината (броя на comment
документи), затова искате да извлечете само размера на този масив. За тази цел можете да използвате $addFields
етап за замяна на resultField
масив с число, което е дължината на този масив.
pipe := c.Pipe([]bson.M{
{
"$lookup": bson.M{
"from": "comment",
"localField": "_id",
"foreignField": "post_id",
"as": "resultField",
},
},
{
"$addFields": bson.M{
"resultField": bson.M{"$size": "$resultField"},
},
},
})
Имайте предвид, че $addFields
етап е еквивалентен на $project
етап, който изрично указва всички съществуващи полета във входните документи и добавя новите полета. Предлага се само от MongoDB версия 3.4.