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

Query mongo untuk mendeteksi perubahan nilai dalam deret waktu

Anda perlu mendapatkan sepasang dokumen berurutan untuk mendeteksi kesenjangan. Untuk itu Anda dapat mendorong semua dokumen ke dalam satu larik, dan zip itu dengan sendirinya menggeser 1 elemen dari kepala:

db.collection.aggregate([
    { $sort: { day: 1 } },
    { $group: { _id: null, docs: { $push: "$$ROOT" } } },
    { $project: {
        pair: { $zip: {
            inputs:[ { $concatArrays: [ [false], "$docs" ] }, "$docs" ]            
        } }
    } },
    { $unwind: "$pair" },
    { $project: {
        prev: { $arrayElemAt: [ "$pair", 0 ] },
        next: { $arrayElemAt: [ "$pair", 1 ] }
    } },
    { $match: {
         $expr: { $ne: ["$prev.value", "$next.value"] } 
    } },
    { $replaceRoot:{ newRoot: "$next" } }
])

Sisanya sepele - Anda melepas array kembali ke dokumen, membandingkan pasangan, memfilter yang sama, dan replaceRoot dari yang tersisa.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. NoSQL (MongoDB) vs Lucene (atau Solr) sebagai database Anda

  2. Memformat Angka sebagai Persentase dalam SQL

  3. Bagaimana menjalankan MongoDB dan Mongo-express dengan docker-compose?

  4. Apakah ada perpustakaan seperti orm untuk mongodb di scala?

  5. Mengkonfigurasi MongoDB di Windows