MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zapytanie mongo w celu wykrycia zmian wartości w szeregach czasowych

Potrzebujesz pary kolejnych dokumentów, aby wykryć lukę. W tym celu możesz umieścić wszystkie dokumenty w jednej tablicy i zip to ze sobą przesunęło 1 element z głowy:

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

Reszta jest banalna — rozwijasz tablicę z powrotem do dokumentów, porównujesz pary, odfiltrowujesz równe i replaceRoot od tego, co zostało.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tworzenie danych testowych dla MongoDB

  2. jak przekonwertować tablicę na obiekt w MongoDB

  3. MongoDB:Liczenie, ile jest każdej z odrębnych wartości?

  4. Filtruj dokumenty według odległości przechowywanej w dokumencie za pomocą $blisko

  5. Najlepszy sposób na przechowywanie obrazów w aplikacji internetowej MERN stack