je travaille sur l'agrégation de mongodb collection.my mongodb collection has creation_time in timestamp.Comment puis-je collecter le résultat du même jour et l'agréger avec le résultat du lendemain?
{
"_id" : "1522845653126"
},
{
"_id" : "1522838153324"
},
{
"_id" : "1513421466415"
},
{
"_id" : "1515488183153"
},
{
"_id" : "1521571234500"
}
Comment puis-je calculer. Combien d'entrées sont enregistrées à une date spécifique? Je suppose que je veux est d'interroger les résultats qui retournent un total cumulé de l'agrégation, comme:
{
time: "2013-10-10"
count: 3,
},
{
time: "2013-10-11"
total: 7,
}
quelque chose comme ça. j'ai essayé de faire quelque chose comme ça
db.coll.aggregate([
{
$group:{
_id:new Date($creation_time).toLocaleDateString(),
$count:{$add:1}
}
time:new Date($creation_time).toLocaleDateString()
}
])
Cela ne fonctionne pas. Où est-ce que je fais mal ?? Je suis nouveau sur mongodb. Merci pour toute aide
Vous pouvez utiliser $toDate
agrégation pour convertir l'horodatage en date ISO et $toLong
pour convertir l'horodatage de la chaîne en valeur entière dans mongodb 3.6
db.collection.aggregate([
{ "$project": {
"_id": {
"$toDate": {
"$toLong": "$_id"
}
}
}},
{ "$group": {
"_id": { "$dateToString": { "format": "%Y-%m-%d", "date": "$_id" } },
"count": { "$sum": 1 }
}}
])
Essayez-le ici
Et avec les versions précédentes
db.collection.aggregate([
{ "$project": {
"date": { "$add": [ new Date(0), "$_id" ] }
}}
])