MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment calculer le centile ?

Il semble qu'il n'y ait toujours pas de méthode native pour calculer les centiles, mais en combinant quelques opérateurs d'agrégation, vous pouvez obtenir le même résultat.

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)

Notez que j'ai écrit mon code d'origine dans pymongo pour un problème qui nécessitait de regrouper 3 champs dans le premier groupe, donc cela peut être plus complexe que nécessaire pour un seul champ. J'écrirais une solution spécifique à cette question mais je ne pense pas qu'il y ait suffisamment d'informations spécifiques.