Dus je aggregatie retourneert eigenlijk alle comment
documenten in het resultField
veld, dat impliciet het aantal resultaten bevat, is een segment waarvan u de lengte in Go kunt controleren met behulp van de ingebouwde len()
functie.
Aangezien je alleen de lengte nodig hebt (aantal comment
documenten), daarom wilt u alleen de grootte van deze array ophalen. Voor dat doel kunt u de $addFields
gebruiken
fase om het resultField
te vervangen array met een getal dat de lengte van deze array is.
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"},
},
},
})
Merk op dat $addFields
stage is gelijk aan een $project
fase die expliciet alle bestaande velden in de invoerdocumenten specificeert en de nieuwe velden toevoegt. Alleen beschikbaar sinds MongoDB versie 3.4.