Vaše agregace tedy ve skutečnosti vrátí všechny comment
dokumenty v resultField
pole, které implicitně obsahuje počet výsledků, je to výřez, jehož délku můžete zkontrolovat v Go pomocí vestavěného len()
funkce.
Protože potřebujete pouze délku (počet comment
dokumenty), proto chcete načíst pouze velikost tohoto pole. Za tímto účelem můžete použít $addFields
fázi nahradit resultField
pole s číslem o délce tohoto pole.
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"},
},
},
})
Všimněte si, že $addFields
etapa je ekvivalentní $project
fázi, která explicitně specifikuje všechna existující pole ve vstupních dokumentech a přidá nová pole. K dispozici pouze od verze MongoDB 3.4.