MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak obliczyć percentyl?

Wydaje się, że nadal nie ma natywnego sposobu obliczania percentyli, ale łącząc kilka operatorów zbiorczych, można uzyskać ten sam wynik.

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)

Uwaga Napisałem swój oryginalny kod w pymongo dla problemu, który wymagał grupowania 3 pól w pierwszej grupie, więc może to być bardziej złożone niż jest to konieczne dla pojedynczego pola. Napisałbym rozwiązanie specyficzne dla tego pytania, ale myślę, że nie ma wystarczającej ilości konkretnych informacji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $not Operator potoku agregacji

  2. Jak stronicować z Mongoose w Node.js?

  3. Baza danych powyżej 2 GB w MongoDB

  4. Jak sprawdzić, czy indeks jest używany?

  5. Jak obliczyć pole średniej dziennej za pomocą MongoDB?