Je suis nouveau sur mongodb et j'essaie d'agrégation pour la première fois. Ici, j'essaie d'obtenir le nombre de tweets regroupés toutes les 15 minutes. Lorsque j'essaie d'exécuter la requête ci-dessous dans la console Mongo, j'obtiens l'erreur:
Un objet de spécification d'étape de pipeline doit contenir exactement un champ.
db.hashtag.aggregate([
{ "$group": {
"_id": {
"year": { "$year": "$tweettime" },
"dayOfYear": { "$dayOfYear": "$tweettime" },
"interval": {
"$subtract": [
{ "$minute": "$tweettime" },
{ "$mod": [{ "$minute": "$tweettime"}, 15] }
]
}
}},
"count": { "$sum": 1 }
}
])
Je n'ai pas pu trouver une bonne explication de la raison dans SO. Veuillez partager vos réflexions sur ce sujet et pourquoi ma requête contient une erreur.
MongoDB se plaint car vous avez une spécification d'étape de pipeline non reconnue "count": { "$sum": 1 }
dans votre pipeline.
Votre pipeline d'origine lorsqu'il est correctement formaté
db.hashtag.aggregate([
{
"$group": {
"_id": {
"year": { "$year": "$tweettime" },
"dayOfYear": { "$dayOfYear": "$tweettime" },
"interval": {
"$subtract": [
{ "$minute": "$tweettime" },
{ "$mod": [{ "$minute": "$tweettime"}, 15] }
]
}
}
},
"count": { "$sum": 1 } /* unrecognised pipeline specification here */
}
])
devrait avoir l'accumulateur agrégé $sum
dans le $group
pipeline comme:
{
"$group": {
"_id": {
"year": { "$year": "$tweettime" },
"dayOfYear": { "$dayOfYear": "$tweettime" },
"interval": {
"$subtract": [
{ "$minute": "$tweettime" },
{ "$mod": [{ "$minute": "$tweettime"}, 15] }
]
}
},
"count": { "$sum": 1 }
}
}
])