MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come ottenere il valore del conteggio usando $lookup in mongodb usando golang?

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.