sql >> Database >  >> NoSQL >> MongoDB

Hoe de telwaarde te krijgen met $lookup in mongodb met golang?

Dus je aggregatie retourneert eigenlijk alle comment documenten in het resultField veld, dat impliciet het aantal resultaten bevat, is een segment waarvan u de lengte in Go kunt controleren met behulp van de ingebouwde len() functie.

Aangezien je alleen de lengte nodig hebt (aantal comment documenten), daarom wilt u alleen de grootte van deze array ophalen. Voor dat doel kunt u de $addFields gebruiken fase om het resultField te vervangen array met een getal dat de lengte van deze array is.

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

Merk op dat $addFields stage is gelijk aan een $project fase die expliciet alle bestaande velden in de invoerdocumenten specificeert en de nieuwe velden toevoegt. Alleen beschikbaar sinds MongoDB versie 3.4.




  1. Voer native mongodb-query uit met mongodb java-stuurprogramma

  2. Mongoose - RangeError:maximale call-stackgrootte overschreden

  3. Hoe kan ik controleren of een veld al dan niet bestaat in MongoDB?

  4. PHP MongoDB aggregeert $match en $group en $addToSet