sql >> Databáze >  >> NoSQL >> MongoDB

Jak získat hodnotu počtu pomocí $lookup v mongodb pomocí golang?

Vaše agregace tedy ve skutečnosti vrátí všechny comment dokumenty v resultField pole, které implicitně obsahuje počet výsledků, je to výřez, jehož délku můžete zkontrolovat v Go pomocí vestavěného len() funkce.

Protože potřebujete pouze délku (počet comment dokumenty), proto chcete načíst pouze velikost tohoto pole. Za tímto účelem můžete použít $addFields fázi nahradit resultField pole s číslem o délce tohoto pole.

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

Všimněte si, že $addFields etapa je ekvivalentní $project fázi, která explicitně specifikuje všechna existující pole ve vstupních dokumentech a přidá nová pole. K dispozici pouze od verze MongoDB 3.4.




  1. Udržujte data Redis naživu mezi docker-compose dolů a nahoru v kontejneru Docker

  2. Spuštění integrace ElastiCache

  3. Mongo DB:Najděte hodnotu vnořeného pole

  4. ValueError:<Příliš mnoho hodnot k rozbalení>