MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie erhalte ich den Zählwert mit $lookup in Mongodb mit Golang?

Ihre Aggregation gibt also tatsächlich alle comment zurück Dokumente im resultField Feld, das implizit die Anzahl der Ergebnisse enthält, ist es ein Stück, dessen Länge Sie in Go mit dem eingebauten len() überprüfen können Funktion.

Da Sie nur die Länge benötigen (Anzahl comment Dokumente), deshalb möchten Sie nur die Größe dieses Arrays abrufen. Zu diesem Zweck können Sie $addFields verwenden Stufe, um das resultField zu ersetzen Array mit einer Zahl, die die Länge dieses Arrays darstellt.

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

Beachten Sie, dass $addFields stage entspricht einem $project Phase, die alle vorhandenen Felder in den Eingabedokumenten explizit angibt und die neuen Felder hinzufügt. Nur verfügbar seit MongoDB Version 3.4.