sql >> Database >  >> NoSQL >> MongoDB

Vraag om gegevens van de laatste X minuten met Mongodb

Voor het 18 minuten durende gedeelte gaat dat niet echt over MongoDB, maar over JavaScript en wat er beschikbaar is in de mongo-shell:

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

Werkt in de mongo-shell, maar het gebruik van Mongo-stuurprogramma's voor andere talen zou echt anders zijn.

Om te "projecteren" over een kleiner schema met zowel waarden als tijdstempels:

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

Beide toepassen:

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

Nou, dat is nog steeds geen "set", omdat er duplicaten kunnen zijn. Om ze kwijt te raken kun je de $group . gebruiken uit het aggregatieraamwerk:

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


  1. Overloop sorteerfase gebufferd datagebruik overschrijdt interne limiet

  2. node.js &express - wereldwijde modules en best practices voor applicatiestructuur

  3. Azure DataBricks Stream foreach mislukt met NotSerializableException

  4. Ingegeven argument moet een enkele string van 12 bytes zijn