sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur beräknar man percentilen?

Det verkar fortfarande inte finnas något naturligt sätt att beräkna percentiler, men genom att kombinera några aggregerade operatorer kan du få samma 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)

Notera att jag skrev min ursprungliga kod i pymongo för ett problem som behövde grupperas på 3 fält i den första gruppen, så detta kan vara mer komplext än nödvändigt för ett enda fält. Jag skulle skriva en lösning som är specifik för den här frågan men jag tror inte att det finns tillräckligt med specifik information.



  1. Hitta en sträng i en sträng i SQL

  2. Flera antal med en enda fråga i mongodb

  3. Mongoid samma inbäddade dokumenttyper för olika fält

  4. Hur spolar jag redis db från python redis?