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

Come calcolare il percentile?

Sembra che non ci sia ancora un modo nativo per calcolare i percentili, ma combinando alcuni operatori aggregati puoi ottenere lo stesso risultato.

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)

Nota Ho scritto il mio codice originale in pymongo per un problema che doveva raggruppare su 3 campi nel primo gruppo, quindi potrebbe essere più complesso del necessario per un singolo campo. Scriverei una soluzione specifica a questa domanda ma non credo che ci siano abbastanza informazioni specifiche.