sql >> Database >  >> NoSQL >> MongoDB

Mongodb, groeperen op datumdiff en uur krijgen

Van wat ik begreep in uw vraag (u moet eigenlijk een paar voorbeelden van documenten bij uw schema verstrekken) als uw Traitement model heeft bijvoorbeeld de volgende structuur:

/* 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")
}

Uw aggregatieraamwerk zou één $project . hebben pijplijnbewerking waarbij u het verschil tussen de twee datums krijgt door de $subtract . te gebruiken operator en zet dat datumverschil vervolgens in milliseconden om in uren met behulp van de $divide exploitant. De laatste stap in uw pijplijn is het gebruik van de $group operator om de documenten uit de vorige pijplijn te groeperen en $sum de uren in datumverschil:

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

Resultaten:

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



  1. MongoDump-query met BinData

  2. Hoe update-bewerkingen in GridFS uitvoeren (met Java)?

  3. datum in MongoDB:bij het invoegen van Date-objecten in de Mongo-database wordt de datum 1 dag eerder dan zichzelf

  4. Kan geen verbinding maken met de MongoDB-atlasdatabase