MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Заявка mongo за откриване на промени в стойността във времеви серии

Трябва да получите двойки последователни документи, за да откриете празнината. За целта можете да поставите всички документи в един масив и zip той сам се измести с 1 елемент от главата:

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" } }
])

Останалото е тривиално - развивате масива обратно към документи, сравнявате двойките, филтрирате равните и replaceRoot от това, което е останало.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoid 3 - достъп до резултатите от map_reduce

  2. Rails &Mongoid уникални резултати

  3. Вмъкнете в MongoDB чрез Node.js

  4. Получаване на списък на всички бази данни с Mongoose

  5. Как използвате Mongoose, без да дефинирате схема?