sql >> Databáze >  >> NoSQL >> MongoDB

Dotaz na získání dat za posledních X minut pomocí Mongodb

V 18minutové části to ve skutečnosti není o MongoDB, ale o JavaScriptu a o tom, co je dostupné v mongo shellu:

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

Funguje v prostředí mongo, ale použití ovladačů Mongo pro jiné jazyky by bylo opravdu jiné.

Chcete-li "promítnout" přes menší schéma s hodnotami a časovými razítky:

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

Použití obou:

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

No, stále to není "set", protože mohou existovat duplikáty. Chcete-li se jich zbavit, můžete použít $group z agregačního rámce:

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


  1. počkejte, až všechny sliby skončí v nodejs s bluebird

  2. Jak se dotazovat MongoDB s likem

  3. ServiceStack Redis, jak vrátit tabulku Lua jako seznam

  4. MongoDB nebo CouchDB - vhodné pro výrobu?