MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Abfrage zum Abrufen der Daten der letzten X Minuten mit Mongodb

In den 18 Minuten geht es nicht wirklich um MongoDB, sondern um JavaScript und was in der Mongo-Shell verfügbar ist:

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

Funktioniert in der Mongo-Shell, aber die Verwendung von Mongo-Treibern für andere Sprachen wäre wirklich anders.

So "projizieren" Sie ein kleineres Schema mit Werten und Zeitstempeln:

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

Beide anwenden:

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

Nun, das ist immer noch kein "Set", da es Duplikate geben könnte. Um sie loszuwerden, können Sie die $group verwenden aus dem Aggregationsframework:

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