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:
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 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
De ce que je lis, il n'est pas possible d'augmenter cette taille de 40Mo. Comment optimiser mon appel pour que ça passe ?
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"} } } ] )
Merci d'avance.
Partager