sql >> Databáze >  >> NoSQL >> MongoDB

Jak vypočítat percentil?

Zdá se, že stále neexistuje žádný nativní způsob výpočtu percentilů, ale zkombinováním několika agregovaných operátorů můžete získat stejný výsledek.

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)

Poznámka:Napsal jsem svůj původní kód v pymongo pro problém, který potřeboval seskupit 3 pole v první skupině, takže to může být složitější, než je nutné pro jedno pole. Napsal bych řešení specifické pro tuto otázku, ale nemyslím si, že existuje dostatek konkrétních informací.



  1. Robo 3T Error:Síť je nedostupná

  2. omezit a seřadit každou skupinu podle v mongoDB pomocí agregace

  3. Bylo dosaženo maximálního počtu připojení Azure Redis Cache

  4. Jak mohu pivotovat na MongoDB