sql >> データベース >  >> NoSQL >> MongoDB

時系列の値の変化を検出するためにmongoにクエリを実行します

    ギャップを検出するには、連続するドキュメントのペアを取得する必要があります。そのために、すべてのドキュメントを1つの配列にプッシュし、 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. socket.ioでredis接続を再利用する方法は?

    2. Redis:n個のネイバーキーを並べ替えて取得する

    3. 保存前のフックマングースでオブジェクトが変更されているかどうかを確認します

    4. DBRefをJsonに解決する