MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Truy vấn mongo để phát hiện các thay đổi giá trị trong chuỗi thời gian

Bạn cần lấy các cặp tài liệu liên tiếp để phát hiện khoảng trống. Để làm được điều đó, bạn có thể đẩy tất cả tài liệu vào một mảng duy nhất và zip nó tự dịch chuyển 1 phần tử từ phần đầu:

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

Phần còn lại là không quan trọng - bạn giải phóng mảng trở lại tài liệu, so sánh các cặp, lọc ra các cặp bằng nhau và ReplaceRoot từ những gì còn lại.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bộ lọc mảng Mongodb 3.6.0-rc3 không hoạt động?

  2. Tài liệu Mongo JSON -> JSON -> BSON

  3. Không thể xây dựng dự án bằng trình điều khiển c ++ mongodb với MSVC

  4. Sao lưu MongoDB tự động

  5. MongoDB thả mọi cơ sở dữ liệu