Så din aggregering returnerar faktiskt alla comment dokument i resultField fältet, som implicit innehåller antalet resultat, det är en del av vilken du kan kontrollera längden i Go med den inbyggda len() funktion.
Eftersom du bara behöver längden (antal comment). dokument), det är därför du bara vill hämta storleken på denna array. För detta ändamål kan du använda $addFields
steg för att ersätta resultField array där ett nummer är längden på denna array.
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"},
},
},
})
Observera att $addFields steg motsvarar ett $project steg som explicit specificerar alla befintliga fält i inmatningsdokumenten och lägger till de nya fälten. Endast tillgängligt sedan MongoDB version 3.4.