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

Jak počítat různé položky data v poli časového razítka v Mongoose/NodeJS?

Co chcete, je použití agregačního rámce s aggregate() příkaz, alespoň pro nalezení jednoho data, jak se ptáte:

SomeSchema.aggregate(
    [
        { "$match": {
            "date": { 
                "$gte": new Date("2014-05-08"), "$lt": new Date("2014-05-09")
            }
        }},
        { "$group": {
            "_id": "$some_item",
            "count": { "$sum": 1 }
        }}
    ],
    function(err,result) {
        // do something with result

    }
);

Pokud konkrétně hledáte „počty“ za několik dat, můžete udělat něco takového:

SomeSchema.aggregate(
    [
        { "$match": {
            "date": { 
                "$gte": new Date("2014-05-01"), "$lt": new Date("2014-06-01")
            }
        }},
        { "$group": {
            "_id": { 
                "year":  { "$year": "$date" },
                "month": { "$month": "$date" },
                "day":   { "$dayOfMonth": "$date" }
            }
            "count": { "$sum": 1 }
        }}
    ],
    function(err,result) {
        // do something with result

    }
);

A to vám dává seskupení „za den“. Vyhledejte operátory agregace dat v dokumentaci, chcete-li v tom pokračovat.




  1. Počet skupin 2 položky pole objektů mongodb

  2. Seřazená sada pevné velikosti v Redis?

  3. mangoose findOne s řazením

  4. Výjimka:nelze převést z typu BSON EOO na datum