MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongodb, kelompokkan berdasarkan tanggal dan dapatkan jam

Dari apa yang saya pahami dalam pertanyaan Anda (Anda sebenarnya perlu memberikan beberapa contoh dokumen dengan skema Anda) jika Traitement Anda model memiliki struktur berikut, misalnya:

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

Kerangka kerja agregasi Anda akan memiliki satu $project operasi pipa di mana Anda mendapatkan perbedaan antara dua tanggal dengan menggunakan $subtract operator lalu ubah perbedaan tanggal tersebut dalam milidetik menjadi jam dengan menggunakan $divide operator. Tahap terakhir dalam pipeline Anda adalah menggunakan $group operator untuk mengelompokkan dokumen dari pipeline sebelumnya dan $sum jam dalam perbedaan tanggal:

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

Hasil:

/* 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. Migrasi dari MongoDB ke Aplikasi Groovy PostgreSQL

  2. Apa perbedaan luwak dan mongoJS? Yang mana yang harus saya gunakan?

  3. Filter data menggunakan populasi luwak

  4. Indeks MongoDB dan $or operator

  5. Perbarui properti yang sama dari setiap dokumen koleksi mongoDb dengan nilai yang berbeda