MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak liczyć różne elementy daty w polu znacznika czasu w Mongoose/NodeJS?

To, czego chcesz, to wykorzystanie struktury agregacji z aggregate() polecenie, przynajmniej do znalezienia jednej daty, jak pytasz:

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

    }
);

Jeśli szukasz konkretnie „liczby” w kilku terminach, możesz zrobić coś takiego:

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 daje grupowanie „na dzień”. Poszukaj operatorów agregacji dat w dokumentacji, jeśli chcesz to zrobić dalej.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wysłać zapytanie do BsonExtraElements w MongoDB za pośrednictwem Linq

  2. Losowe dokumenty z MongoDB przy użyciu spring-data

  3. projekcja nie działa z zapytaniem wyszukiwania

  4. Uwierzytelnij się po wybraniu bazy danych

  5. Używanie $exists w wyrażeniu MongoDB