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

Mongodb, seskupte se podle datadiff a získejte hodinu

Z toho, co jsem pochopil ve vaší otázce (ve skutečnosti potřebujete poskytnout několik vzorových dokumentů se svým schématem), pokud vaše Traitement model má například následující strukturu:

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

Váš agregační rámec by měl jeden $project operace potrubí, kde získáte rozdíl mezi dvěma daty pomocí $subtract operátor a poté transformovat tento rozdíl v datech v milisekundách na hodiny pomocí $divide operátor. Poslední fází vašeho kanálu bude použití $group operátor pro seskupení dokumentů z předchozího kanálu a $sum rozdíl hodin v datu:

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

Výsledky:

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



  1. MongoDB Agregation Framework – Jak porovnat podle časového období, seskupit podle dnů a průměr návratnosti pro každý den?

  2. Potíže s konfigurací uživatelů a připojením k Mongo pomocí PHP

  3. Mongodb - dotaz na dnešní součty, týdenní součty a měsíční součty v jednom dotazu

  4. Vypočítejte průměrnou hodnotu dokumentu mongodb