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

Grupuj według stanu w MongoDB

Struktura agregacji jest tym, czego potrzebujesz:

db.collection.aggregate([
    { "$group": {
        "_id": {
            "year": { "$year": "$utc_timestamp" },
            "month": { "$month": "$utc_timestamp" },
            "day": { "$dayOfMonth": "$utc_timestamp" },
        },
        "defects": {
            "$sum": { "$cond": [
                { "$eq": [ "$status", "defect" ] },
                1,
                0
            ]}
        },
        "totalCount": { "$sum": 1 }
    }},
    { "$project": {
        "defect_rate": {
            "$cond": [
                { "$eq": [ "$defects", 0 ] },
                0,
                { "$divide": [ "$defects", "$totalCount" ] }
            ]
        }
    }}
])

Więc najpierw grupujesz w dniu używając operatorów agregacji dat i otrzymujesz totalCount elementów w danym dniu. Użycie $cond operator tutaj określa, czy "status" jest faktycznie defektem, czy nie, a wynikiem jest warunkowa $sum gdzie liczone są tylko wartości "wady".

Po zgrupowaniu ich dziennie po prostu $divide wynik, z kolejnym sprawdzeniem za pomocą $cond aby upewnić się, że nie dzielisz przez zero.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Znajdź obiekty między dwiema datami MongoDB

  2. Jakie są zalety korzystania z bazy danych pozbawionej schematów, takiej jak MongoDB, w porównaniu z relacyjną bazą danych?

  3. Jak korzystać z transakcji MongoDB za pomocą Mongoose?

  4. MongoDB $rok

  5. Dlaczego nie zaleca się zamykania połączenia MongoDB w dowolnym miejscu w kodzie Node.js?