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

Mongodbで最後のX分のデータを取得するためのクエリ

    18分間の部分では、これは実際にはMongoDBについてではなく、JavaScriptとmongoシェルで利用できるものについてです:

    query = {
        timestamp: { // 18 minutes ago (from now)
            $gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
        }
    }
    

    mongoシェルで動作しますが、他の言語でMongoドライバーを使用することは実際には異なります。

    値とタイムスタンプの両方を使用して、より小さなスキーマに「投影」するには:

    projection = {
        _id: 0,
        value: 1,
        timestamp: 1,
    }
    

    両方を適用する:

    db.mycol.find(query, projection).sort({timestamp: 1});
    

    まあ、重複があるかもしれないので、それはまだ「セット」ではありません。それらを取り除くには、$groupを使用できます 集約フレームワークから:

    db.mycol.aggregate([
        {$match: query},
        {$group: {
            _id: {
                value: "$value",
                timestamp: "$timestamp",
            }
        }},
        {$project: {
            value: "$_id.value",
            timestamp: "$_id.timestamp",
        }},
        {$sort: {timestamp: 1}},
    ])
    


    1. MongoDBとMongooseの違い

    2. Docker内のリモートサーバーへのredis接続タイムアウト

    3. pymongoを使用してmongodbでクエリ日付を作成するにはどうすればよいですか?

    4. 時間ベースの値を並べ替えるためのRedisデータ構造設計