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

Kueri untuk mendapatkan data X menit terakhir dengan Mongodb

Untuk bagian 18 menit, itu bukan tentang MongoDB, tetapi tentang JavaScript dan apa yang tersedia di shell mongo:

query = {
    timestamp: { // 18 minutes ago (from now)
        $gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
    }
}

Bekerja di shell mongo, tetapi menggunakan driver Mongo untuk bahasa lain akan sangat berbeda.

Untuk "memproyeksikan" pada skema yang lebih kecil dengan nilai dan stempel waktu:

projection = {
    _id: 0,
    value: 1,
    timestamp: 1,
}

Menerapkan keduanya:

db.mycol.find(query, projection).sort({timestamp: 1});

Yah, itu masih bukan "set" karena mungkin ada duplikat. Untuk menghilangkannya, Anda dapat menggunakan $group dari kerangka kerja agregasi:

db.mycol.aggregate([
    {$match: query},
    {$group: {
        _id: {
            value: "$value",
            timestamp: "$timestamp",
        }
    }},
    {$project: {
        value: "$_id.value",
        timestamp: "$_id.timestamp",
    }},
    {$sort: {timestamp: 1}},
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 9 Fitur ClusterControl yang Tidak Akan Anda Temukan di Alat Manajemen Basis Data Lainnya

  2. String luwak ke ObjectID

  3. Mengkloning koleksi di MongoDB

  4. 'Gagal memutuskan tautan kesalahan file soket di MongoDB 3.0

  5. Permintaan untuk dokumen di mana ukuran array lebih besar dari 1