sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan tæller man forskellige datoelementer i et tidsstempelfelt i Mongoose/NodeJS?

Det, du ønsker, er brug af aggregeringsrammen med aggregate() kommando, i det mindste for at finde en dato, som du spørger:

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

    }
);

Hvis du specifikt leder efter "tæller" over flere datoer, så kan du gøre noget som dette:

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

    }
);

Og det giver dig "per dag"-gruppering. Se efter datoaggregationsoperatorerne i dokumentationen, hvis du ønsker at tage dette videre.




  1. Forstå holdbarhed og skrivesikkerhed i MongoDB

  2. Sådan returneres data fra MongoDB

  3. Hvor skal jeg placere aktiviteters tidslinje i mongodb, indlejret i bruger eller separat?

  4. Brug af Hive til at interagere med HBase, del 1