MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment obtenir la valeur de comptage en utilisant $lookup dans mongodb en utilisant golang ?

Ainsi, votre agrégation renvoie en fait tous les comment documents dans le resultField champ, qui contient implicitement le nombre de résultats, c'est une tranche dont vous pouvez vérifier la longueur en Go en utilisant le len() intégré fonction.

Puisque vous n'avez besoin que de la longueur (nombre de comment documents), c'est pourquoi vous ne souhaitez récupérer que la taille de ce tableau. À cette fin, vous pouvez utiliser le $addFields étape pour remplacer le resultField tableau avec un nombre étant la longueur de ce tableau.

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"},
        },
    },
})

Notez que $addFields stage est équivalent à un $project étape qui spécifie explicitement tous les champs existants dans les documents d'entrée et ajoute les nouveaux champs. Disponible uniquement depuis la version 3.4 de MongoDB.