sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur får man räknevärdet med $lookup i mongodb med golang?

Så din aggregering returnerar faktiskt alla comment dokument i resultField fältet, som implicit innehåller antalet resultat, det är en del av vilken du kan kontrollera längden i Go med den inbyggda len() funktion.

Eftersom du bara behöver längden (antal comment). dokument), det är därför du bara vill hämta storleken på denna array. För detta ändamål kan du använda $addFields steg för att ersätta resultField array där ett nummer är längden på denna array.

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

Observera att $addFields steg motsvarar ett $project steg som explicit specificerar alla befintliga fält i inmatningsdokumenten och lägger till de nya fälten. Endast tillgängligt sedan MongoDB version 3.4.




  1. JSON serialiserar Mongodb

  2. Toppmodern databashantering:ClusterControl - Guiden

  3. Mongoose returnerar odefinierat för ett befintligt fält

  4. MongoDB fragmenterad samling balanserar inte om