Quindi la tua aggregazione restituisce effettivamente tutti i comment
documenti nel resultField
campo, che contiene implicitamente il numero di risultati, è una fetta di cui puoi controllare la lunghezza in Go usando il builtin len()
funzione.
Poiché ti serve solo la lunghezza (numero di comment
documenti), ecco perché vuoi recuperare solo la dimensione di questo array. A tale scopo è possibile utilizzare $addFields
fase per sostituire il resultField
matrice con un numero che rappresenta la lunghezza di questa matrice.
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"},
},
},
})
Nota che $addFields
stage è equivalente a un $project
fase che specifica in modo esplicito tutti i campi esistenti nei documenti di input e aggiunge i nuovi campi. Disponibile solo a partire dalla versione 3.4 di MongoDB.