sql >> Database >  >> NoSQL >> MongoDB

Hoe verschillende datumitems in een tijdstempelveld in Mongoose/NodeJS te tellen?

Wat je wilt is het gebruik van het aggregatieraamwerk met de aggregate() commando, tenminste voor het vinden van een date zoals je vraagt:

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

    }
);

Als u specifiek op zoek bent naar "tellingen" over meerdere datums, dan kunt u zoiets als dit doen:

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

    }
);

En dat geeft je "per dag" groepering. Zoek naar de operators voor datumaggregatie in de documentatie als u hiermee verder wilt gaan.




  1. Wat zijn de onderliggende datastructuren die voor Redis worden gebruikt?

  2. Hoe de aggregatiefunctie mongo db-query te gebruiken?

  3. Mongo-query met mongoid in rails-app die cursortime-outfout veroorzaakt

  4. mangoest recursief bevolken