Mongodb timestamp to date format statistics
In daily life, timestamps are often found in mongodb. Here is how to change the date format according to the timestamp.
Generate data
Db.test.insert ({"id": 20162, "create_time": 1554195600, "time": "2019-04-02 17:00:00"}); db.test.insert ({"id": 20159, "create_time": 1552635000, "time": "15:30:00"); db.test.insert ({"id": 20160, "create_time": 1552632900, "time": "2019-03-15 14:55:00"}) Db.test.insert ({"id": 20161, "create_time": 1552632900, "time": "2019-03-15 14:55:00"}); db.test.insert ({"id": 20158, "create_time": 1542798000, "time": "2018-11-21 19:00:00"})
Query data
> db.test.find () {"_ id": ObjectId ("5d0c9094e07a14a96b41b7c9"), "id": 20162, "create_time": 1554195600, "time": "2019-04-02 17:00:00"} {"_ id": ObjectId ("5d0c9094e07a14a96b41b7ca"), "id": 20159, "create_time": 1552635000, "time": "2019-03-15 15:30:00"} {"_ id": ObjectId ("5d0c9094e07a14a96b41b7cb"), "id": 20160 "create_time": 1552632900, "time": "2019-03-15 14:55:00"} {"_ id": ObjectId ("5d0c9094e07a14a96b41b7cc"), "id": 20161, "create_time": 1552632900, "time": "14:55:00" {"_ id": ObjectId ("5d0c9095e07a14a96b41b7cd"), "id": 20158, "create_time": 1542798000 Time: "2018-11-21 19:00:00"}
Create_time queries by timestamp grouped by day
Db.test.aggregate ([{$project: {dt: {format: "% Y-%m-%d", date: {$add: [ISODate ("1970-01-01T00:00:00Z"), {$multiply: ["$create_time", 1000]}, {$group: {_ id: "$dt" Count: {$sum:1}},])
Query result
> db.test.aggregate ([{... $project: {. Dt: {$dateToString: {format: "% Y-%m-%d", date: {$add: [ISODate ("1970-01-01T00:00:00Z"), {$multiply: ["$create_time", 1000]}.}, {. $group: {. _ id: "$dt". , count: {$sum:1}...},]); {"_ id": "2018-11-21", "count": 1} {"_ id": "2019-03-15", "count": 3} {"_ id": "2019-04-02", "count": 1}