MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да броим отделни елементи от дата в поле за клеймо за време в Mongoose/NodeJS?

Това, което искате, е използването на рамката за агрегиране с aggregate() команда, поне за намиране на една дата, както питате:

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

    }
);

Ако конкретно търсите „преброяване“ за няколко дати, можете да направите нещо подобно:

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

    }
);

И това ви дава групиране "на ден". Потърсете операторите за агрегиране на дати в документацията, ако искате да продължите това.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Услугата „MongoDB сървър“ (MongoDB) не успя да стартира. Проверете дали имате достатъчно права за стартиране на системни услуги

  2. Mongorestore, от сървър за производство на метеор до локален

  3. Съвети за управление на архивиране на MongoDB за разчленени клъстери

  4. Как да конфигурирате източник на данни StrongLoop LoopBack MongoDB за внедряване в Heroku

  5. Кеширане на MongoDB връзки в Django