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.