sql >> Database teknologi >  >> NoSQL >> MongoDB

Forespørgsel for at få data fra de sidste X minutter med Mongodb

I den 18-minutters del handler det egentlig ikke om MongoDB, men om JavaScript og hvad der er tilgængeligt i mongo-skallen:

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

Fungerer i mongo-skallen, men at bruge Mongo-drivere til andre sprog ville være meget anderledes.

Sådan "projekteres" over et mindre skema med både værdier og tidsstempler:

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

Anvender begge dele:

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

Nå, det er stadig ikke et "sæt", da der kan være dubletter. For at slippe af med dem kan du bruge $group fra aggregeringsrammen:

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


  1. MongoDB $cosh

  2. $strLenBytes vs $strLenCP i MongoDB:Hvad er forskellen?

  3. MongoDB $type Aggregation Pipeline Operator

  4. Sortering af aggregering addToSet resultat