MongoDB агрегат в пределах ежедневной группировки

У меня есть несколько документов в Монго, которые выглядят примерно так:

{
  _id : ObjectId("..."),
  "make" : "Nissan",
  ..
},
{
  _id : ObjectId("..."),
  "make" : "Nissan",
  "saleDate" :  ISODate("2013-04-10T12:39:50.676Z"),
  ..
}

В идеале я хотел бы иметь возможность подсчитать по количеству проданных автомобилей за день. Затем я хотел бы посмотреть либо сегодня, либо окно, такое как сегодня, в течение последних семи дней.

Я смог выполнить ежедневный просмотр с некрасивым кодом

db.inventory.aggregate(
  { $match : { "saleDate" : { $gte: ISODate("2013-04-10T00:00:00.000Z"), $lt: ISODate("2013-04-11T00:00:00.000Z")  } } } ,
  { $group : { _id : { make : "$make", saleDayOfMonth : { $dayOfMonth : "$saleDate" } }, cnt : { $sum : 1 } } }
)

Который затем дает результаты

{
  "result" : [
    {
      "_id" : {
        "make" : "Nissan",
        "saleDayOfMonth" : 10
      },
      "cnt" : 2
    },
    {
      "_id" : {
        "make" : "Toyota",
        "saleDayOfMonth" : 10
      },
      "cnt" : 4
    },
  ],
  "ok" : 1
}

Так что это нормально, но я бы предпочел не менять значения даты и времени в запросе. Затем, как я уже упоминал выше, я хотел бы иметь возможность выполнить этот запрос (опять же, без необходимости каждый раз его изменять) и видеть одинаковые результаты, подгруппированные по дням за последнюю неделю.

Ох, и вот пример данных, которые я использовал для запроса

db.inventory.save({"make" : "Nissan","saleDate" :  ISODate("2013-04-10T12:39:50.676Z")});
db.inventory.save({"make" : "Nissan"});
db.inventory.save({"make" : "Nissan","saleDate" :  ISODate("2013-04-10T11:39:50.676Z")});
db.inventory.save({"make" : "Toyota","saleDate" :  ISODate("2013-04-09T11:39:50.676Z")});
db.inventory.save({"make" : "Toyota","saleDate" :  ISODate("2013-04-10T11:38:50.676Z")});
db.inventory.save({"make" : "Toyota","saleDate" :  ISODate("2013-04-10T11:37:50.676Z")});
db.inventory.save({"make" : "Toyota","saleDate" :  ISODate("2013-04-10T11:36:50.676Z")});
db.inventory.save({"make" : "Toyota","saleDate" :  ISODate("2013-04-10T11:35:50.676Z")});

Заранее спасибо, Кевин

Ответы на вопрос(3)

Ваш ответ на вопрос