MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como obter o valor da contagem usando $ lookup no mongodb usando golang?


Portanto, sua agregação retorna todos os comment documentos no resultField campo, que contém implicitamente o número de resultados, é uma fatia da qual você pode verificar o comprimento em Go usando o len() embutido função.

Como você só precisa do comprimento (número de comment documentos), é por isso que você deseja recuperar apenas o tamanho desse array. Para isso, você pode usar o $addFields stage para substituir o resultField array com um número sendo o comprimento deste 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"},
        },
    },
})

Observe que $addFields stage é equivalente a um $project estágio que especifica explicitamente todos os campos existentes nos documentos de entrada e adiciona os novos campos. Disponível apenas desde a versão 3.4 do MongoDB.