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

Mongodb, grupuj według datediff i otrzymuj godzinę

Z tego, co zrozumiałem w twoim pytaniu (tak naprawdę musisz dostarczyć kilka przykładowych dokumentów ze swoim schematem), jeśli twój Traitement model ma następującą strukturę, na przykład:

/* 0 */
{
    "_id" : 1,
    "user" : "abc",
    "dateEntre" : ISODate("2014-03-01T08:00:00.000Z"),
    "dateSortie" : ISODate("2014-03-01T13:00:00.000Z")
}

/* 1 */
{
    "_id" : 2,
    "user" : "jkl",
    "dateEntre" : ISODate("2014-03-01T08:00:00.000Z"),
    "dateSortie" : ISODate("2014-03-01T10:30:00.000Z")
}
/* 2 */
{
    "_id" : 3,
    "user" : "jkl",
    "dateEntre" : ISODate("2014-03-01T12:00:00.000Z"),
    "dateSortie" : ISODate("2014-03-01T18:00:00.000Z")
}

Twoja struktura agregacji miałaby jeden $project operacja potoku, w której uzyskujesz różnicę między dwiema datami za pomocą $subtract operatora, a następnie przekształć tę różnicę dat w milisekundach na godziny za pomocą $divide operator. Ostatnim etapem w potoku będzie użycie grupy $group operator do grupowania dokumentów z poprzedniego potoku i $sum różnica godzin w datach:

Traitement.aggregate([ 
    { 
        $project: { 
            user: 1,             
            dateDifference: { 
                $divide: [{ 
                    $subtract: [ "$dateSortie", "$dateEntre" ]
                    }, 1000*60*60
                ] 
            }
         }
    },
    { 
        $group: { 
            _id: "$user",             
            total : { 
                $sum : "$dateDifference"
            }
        }
    } 
])

Wyniki:

/* 0 */
{
    "result" : [ 
        {
            "_id" : "jkl",
            "total" : 8.5
        }, 
        {
            "_id" : "abc",
            "total" : 5
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zliczanie agregacji obiektów zagnieżdżonych MongoDB

  2. Dlaczego oprogramowanie pośredniczące nodejs-mongodb ma inną składnię niż powłoka mongo?

  3. Szukaj w całej kolekcji (mongodb) za pomocą nodejs

  4. Selektywna replikacja w mongodb

  5. Przewracanie się w Mongo DB i problem z Id