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

MongoDB агрегиране PHP, групиране по часове

Не би трябвало да създава резултатите, които виждате, но трябва да включите client_id във вашия $project оператор, така че да е достъпен за $group оператор.

'$project' => array(
  'client_id' => 1,
  'hour' => array(
    'years' => array( '$year' => '$ts' ),
    'months' => array( '$month' => '$ts' ),
    'days' => array( '$dayOfMonth' => '$ts' ),
    'hours' => array( '$hour' => '$ts' ),
  )
),

Еквивалентът на обвивката работи, след като направих тази промяна:

db.test.aggregate(
    { $project: {
        hour: {
            years: {$year: '$ts'},
            months: {$month: '$ts'},
            days: {$dayOfMonth: '$ts'},
            hours: {$hour: '$ts'}
        },
        client_id: '$client_id'
    }},
    { $group: {
        _id: { client_id: '$client_id', hour: '$hour' },
        number: { $sum: 1}
    }})

върнато:

{
  "result": [
    {
      "_id": {
        "client_id": "12345667889",
        "hour": {
          "years": 2013,
          "months": 1,
          "days": 2,
          "hours": 7
        }
      },
      "number": 1
    }
  ],
  "ok": 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Въведение в Morphia – Java ODM за MongoDB

  2. Предупреждение:Достъп до несъществуващо свойство „MongoError“ на модулни експорти в рамките на кръгова зависимост

  3. Задаване на конфигурация за оторизация на MongoDB в Python-Eve

  4. NoSQL бази данни - добри кандидати за обработка на журнали/агрегиране и събиране?

  5. MongoDB - $set за актуализиране или натискане на елемент Array