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.