sql >> Database >  >> NoSQL >> MongoDB

Krijg percentages met MongoDB geaggregeerde $ group

Nou, ik denk percentage moet string zijn als de waarde % . bevat

Eerst moet je count het nummer van het document.

var nums = db.collection.count();

db.collection.aggregate(
    [
        { "$group": { "_id": {"type":  "$type"}, "count": { "$sum": 1 }}},    
        { "$project": { 
            "count": 1, 
            "percentage": { 
                "$concat": [ { "$substr": [ { "$multiply": [ { "$divide": [ "$count", {"$literal": nums }] }, 100 ] }, 0,2 ] }, "", "%" ]}
            }
        }
    ]
)

Resultaat

{ "_id" : { "type" : "short" }, "count" : 3, "percentage" : "60%" }
{ "_id" : { "type" : "big" }, "count" : 2, "percentage" : "40%" }


  1. Vergelijk arrays en retourneer het verschil

  2. Case-statement uitvoeren in mongodb-aggregatieraamwerk

  3. 'Veld had een boon nodig van het type dat niet gevonden kon worden.' fout lente rustgevende API met behulp van mongodb

  4. Hoe plaats je een afbeeldingsbestand in een json-object?