Bonjour @ tous,
J'ai plusieurs collections dont le format du contenu est identique, mais dont le volume de données est différent (col1=20Mo, col2=1,3Go)
Je fais une requête d'aggrégation qui fonctionne bien sur col1, mais qui retourne un message d'erreur sur col2:
Code :
Sélectionner tout
-
Visualiser dans une fenêtre à part
1 2 3 4 5 6 7 8 9 10 11 12
| Assert: command failed: {
"_t" : "OKMongoResponse",
"ok" : 0,
"code" : 16501,
"errmsg" : "Query exceeded the maximum allowed memory usage of 40 MB. Please consider adding more filters to reduce the query response size.",
"$err" : "Query exceeded the maximum allowed memory usage of 40 MB. Please consider adding more filters to reduce the query response size."
} : aggregate failed
_getErrorWithCode@src/mongo/shell/utils.js:23:13
doassert@src/mongo/shell/assert.js:13:14
assert.commandWorked@src/mongo/shell/assert.js:266:5
DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1215:5
@(shell):1:1 |
Voici ma query (l'idée est de récupérer le dernier envoi de chaque message, identifié par son deveui) :
Code :
Sélectionner tout -
Visualiser dans une fenêtre à part
1 2 3 4 5 6 7 8 9 10 11 12
| db.loramessages.aggregate(
{ $sort: { "timestamp": -1 } },
$group:
_id: "$device_properties.deveui",
"loramessages":{"$first":"$$ROOT"}
De ce que je lis, il n'est pas possible d'augmenter cette taille de 40Mo. Comment optimiser mon appel pour que ça passe ?
Merci d'avance.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité,
merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
|