MongoDB 2.6-Server, der bei Abfragen unterhalb des Limits den Fehler BSONObj-Größe ist ungültig ist

9

Ich habe versucht, von MongoDB 2.4 auf 2.6 zu aktualisieren, und das einzige, was mich zurückhält, ist dieses sehr seltsame Verhalten. Wenn ich einen mongod 2.4 mit einer ziemlich großen Anfrage ~ 6MB anfrage, habe ich kein Problem - die Abfrage wird ganz gut ausgeführt (obwohl die Daten unten erzeugt und gefälscht sind, habe ich mit gültigen Daten getestet und die Abfrage beendet). Wenn ich eine Instanz von mongod 2.6 mit denselben Daten abfrage, bekomme ich den Fehler:

%Vor%

Allerdings sind meine eingehenden Anfragen bei 16 MB und ich kann verschiedene Größen der ausgehenden Ergebnisse testen - keine Änderung. Beachten Sie, dass dies nur bei Abfragen für ein Feld vom Typ ObjectId auftritt.

Referenzen:

Warum beurteilt 2.6 die Größe einer eingehenden Abfrage falsch und was kann ich dagegen tun?

Eine Theorie, die ich habe, ist, dass es einen Unterschied darin gibt, wie die Shell und der Server ObjectId s sehen, und so auf dem Server die gleiche Abfrage größer ist ...

Dinge, die keine Rolle spielen:

  • Monogdb-Clientversion
  • 2.6.X version - Ich habe 2.6.1 - 2.6.3 getestet
  • Wenn die Abfrage Daten zurückgibt oder nicht (d. h., ich kann versuchen, _id mit gefälschten IDs oder echten IDs zu vergleichen, kein Unterschied)
  • wenn wir in der Shell ObjectId verwenden oder nicht (siehe big_20_with_obj.json , erstellt mit der Echozeile: echo "ObjectId(\"12345123451234512$i\")," )

Dinge, die wichtig sind:

  • mongod-Version ist 2.6.X ; 2.4.10 und darunter sind nicht betroffen
  • wenn wir gegen ein ObjectId-Feld
  • abfragen
  • wenn die Sammlung existiert (aka db.randomfakecollection.find({'_id': {'$in': big}}) wirft den Fehler nicht)
  • wenn wir den Operator $in verwenden oder nicht - $eq wirft nicht

So replizieren Sie:

So erstellen Sie die große Datei:

%Vor%

Größe der Rohdateien:

%Vor%

Ausführen der Datei:

%Vor%     
schimmy 02.07.2014, 18:50
quelle

1 Antwort

4

Sie haben Ссылка aufgerufen, das den Fall beschreibt, in dem die Abfrage unter 16 MB begrenzt sein könnte, aber intern Abfrage Runner-Plan generiert überschreitet die 16 MB Grenze.

Das Update sollte in der nächsten Version 2.6 sein (wahrscheinlich 2.6.4 einige Zeit später in diesem Monat Juli 2014).

    
Asya Kamsky 06.07.2014, 01:04
quelle

Tags und Links