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

deret waktu dan kerangka agregasi (mongo)

Kesalahan Anda adalah cara Anda menghitung _id untuk $group operator, khususnya second bagian:

second: { $subtract: [
    { $second: "$time" },
    { $mod: [
        { $second: "$time" },
        timeBlock / 1000
    ]}
]}

Jadi, alih-alih membagi semua data Anda menjadi 10 timeBlock potongan panjang milidetik mulai dari new Date(end - 10 * timeBlock) , Anda membaginya menjadi 11 bagian mulai dari pembagi terdekat timeBlock .

Untuk memperbaikinya Anda harus terlebih dahulu menghitung delta = end - $time dan kemudian menggunakannya sebagai ganti $time yang asli untuk membuat _id . Anda .

Berikut adalah contoh dari apa yang saya maksud:

Document.aggregate({
    $match: {
        time: {
            $gte: new Date(end - 10 * timeBlock),
            $lt: new Date(end)
        }
    }
}, {
    $project: {
        time: 1,
        delta: { $subtract: [
            new Date(end),
            "$time"
        ]}
    }
}, {
    $project: {
        time: 1,
        delta: { $subtract: [
            "$delta",
            { $mod: [
                "$delta",
                timeBlock
            ]}
        ]}
    }
}, {
    $group: {
        _id: { $subtract: [
            new Date(end),
            "$delta"
        ]},
        count: { $sum: 1 }
    }
}, {
    $project: {
        time: "$_id",
        count: 1,
        _id: 0
    }
}, {
    $sort: {
        time: 1
    }
}, function(err, result) {
    // ...
})

Saya juga menyarankan Anda untuk menggunakan nilai waktu mentah (dalam milidetik), karena itu jauh lebih mudah dan karena itu akan mencegah Anda membuat kesalahan. Anda dapat menggunakan time ke dalam timeParts setelah $group menggunakan $project operator.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Menyematkan pengguna ke dalam komentar

  2. Temukan dokumen mongodb menggunakan string _id parsial

  3. Memperbaiki Kesalahan Halaman di MongoDB

  4. tidak dapat terhubung ke mongodb yang dihosting di server jauh menggunakan monk

  5. Spring HATEOAS RepresentationModel, Tidak dapat mengatur tautan properti karena tidak ada penyetel, tidak layu dan itu bukan bagian dari konstruktor ketekunan