sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan beregner man percentilen?

Der ser stadig ikke ud til at være nogen indbygget måde at beregne percentiler på, men ved at kombinere nogle få aggregerede operatorer kan du få det samme resultat.

db.items.aggregate([
        {'$group': {
            '_id': {
                'league': '$league',
                'base': '$base',
                'type': '$type'
            },
            'value': {'$push': '$chaosequiv'}
        }},
        {'$unwind': '$value'},
        {'$sort': {'value': 1}},
        {'$group': {'_id': '$_id', 'value': {'$push': '$value'}}},
        {'$project': {
            '_id': 1,
            'value': {'$arrayElemAt': ['$value', {'$floor': {'$multiply': [0.25, {'$size': '$value'}]}}]}
        }}
    ], allowDiskUse=True)

Bemærk, at jeg skrev min originale kode i pymongo til et problem, der skulle grupperes på 3 felter i den første gruppe, så dette kan være mere komplekst end nødvendigt for et enkelt felt. Jeg ville skrive en løsning specifikt til dette spørgsmål, men jeg tror ikke, der er nok specifik information.



  1. MongoDB:Sådan finder du nth højeste løn fra indsamling

  2. Sådan hentes forskellige nøgler inde i et objekt i MongoDB

  3. Kan du ikke starte logstash ved hjælp af mongoDB config?

  4. Sorter dokumenter efter værdi i det sidste element i en matrix, der matcher filter. Mongodb