Here\'s a record Customers Collection
{
name: xyz,
.
.
.
createdAt: Sun Nov 20 2016 00:00:00 GMT+0530 (IST)
lastModified: Sat Dec 10
if you want to count by lastModified
date and time then can use just like:
db.getCollection('collectionName').aggregate({$group:{_id: "$lastModified", count:{$sum:1}}})
and if you want to count by lastModified
date only then can use just like:
db.getCollection('collectionName').aggregate(
[
{
$group:
{
_id:
{
day: { $dayOfMonth: "$lastModified" },
month: { $month: "$lastModified" },
year: { $year: "$lastModified" }
},
count: { $sum:1 },
date: { $first: "$lastModified" }
}
},
{
$project:
{
date:
{
$dateToString: { format: "%Y-%m-%d", date: "$date" }
},
count: 1,
_id: 0
}
}
])
I got this sorted in yii2 by this
$aggregateResult = Yii::$app->mongodb->getCollection('patient')->aggregate([
[
'$match' => [
'$and' => [
['deleted_at' => ['$exists' => false]],
['registration_date' => ['$gte' => $startDateStamp, '$lte' => $endDateStamp]],
]
]
],
[
'$group' => [
'_id' => [
'day' => ['$dayOfMonth' => ['$toDate' => ['$multiply' => ['$registration_date', 1000]]]],
'month' => ['$month' => ['$toDate' => ['$multiply' => ['$registration_date', 1000]]]],
'year' => ['$year' => ['$toDate' => ['$multiply' => ['$registration_date', 1000]]]]
],
'count' => ['$sum' => 1],
'date' => ['$first' => ['$toDate' => ['$multiply' => ['$registration_date', 1000]]]]
]
],
[
'$project' => [
'date' => ['$dateToString' => ['format' => '%Y-%m-%d', 'date' => '$date']],
'count' => 1,
'_id' => 0
]
],
['$sort' => ['date' => 1]],
]);