MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consulta para obter dados dos últimos X minutos com o Mongodb


Para a parte de 18 minutos, isso não é realmente sobre o MongoDB, mas sobre JavaScript e o que está disponível no shell do mongo:
query = {
    timestamp: { // 18 minutes ago (from now)
        $gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
    }
}

Funciona no shell mongo, mas usar drivers Mongo para outros idiomas seria muito diferente.

Para "projetar" em um esquema menor com valores e carimbos de data/hora:
projection = {
    _id: 0,
    value: 1,
    timestamp: 1,
}

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

Bem, isso ainda não é um "conjunto", pois pode haver duplicatas. Para se livrar deles você pode usar o $group da estrutura de agregação:
db.mycol.aggregate([
    {$match: query},
    {$group: {
        _id: {
            value: "$value",
            timestamp: "$timestamp",
        }
    }},
    {$project: {
        value: "$_id.value",
        timestamp: "$_id.timestamp",
    }},
    {$sort: {timestamp: 1}},
])