Quel est le nombre maximum de paramètres passés à $dans la requête dans MongoDB?
Quel est le nombre maximum de paramètres passés à $dans la requête dans MongoDB?
- J'ai lu quelque part que c'est 1 000 000.
- Voir ci-dessous pour le calcul réel avec le travail indiqué.
Vous devez vous connecter pour publier un commentaire.
La requête elle-même est un document . MongoDB limites des formats de documents (de la version 2.4.0+) à 16 MO.
Vraiment, ce que vous faites avec un trouver est:
où "queryDoc' est quelque chose comme:
De trouver le nombre maximum de valeurs que vous pouvez passer à un $dans la requête, utilisez le bsonsize commande:
Donc, vous pouvez voir que chaque entier supplémentaire est de taille 11 octets. Pas 11 bits, 11 OCTETS. Cela est dû à la façon dont BFILS stocke en interne des nombres au moins 64 bits chacun, en plus de l'emballage. Ceci peut être facilement vu avec:
Donc, peu importe ce que la taille d'un numéro individuel, c'est la même bsonsize.
Sur la Question elle-Même: Quelle est la taille de cette requête document?
L'ajout de ces pour un champ de requête avec un $à la clause, dans pymongo, à travers les mongos javascript invite, que ce soit, tous rendement même plus faits pour la taille maximale d'un $dans la requête:
Donc, en Supposant que vous avez un octet fieldname (le minimum, vraiment), votre maximum est de:
LA RÉPONSE: 1,525,198 (C'est 1,5 million de dollars. C'est assez grand.)
Regarde comme il n'y a pas de limitation.
J'ai fait un petit test.
1) la Collecte A eu 1 Million de simple objet JSON {id:,nom:}
2) Dans la Collection B, j'ai chargé id de référence de la collection jusqu'à ce que je suis l'exception suivante. J'ai pu insérer un compteur de référence de 450k de max.
3) je pourrais envoyer 450k de ces codes d'identification de $dans[id1...id450000] et tirez sur l'ensemble de la liste de 450k identifiants de 1 Million d'objets dans la collection A.
Wow! c'est plus plus plus que suffisant pour mon application :D. MongoDB est vraiment cool.
Je pense que la limite est seulement déterminé par la taille d'un BSONDocument. Lorsque vous définissez une requête, vous pouvez continuer à ajouter des valeurs dans un $à la clause jusqu'à ce que vous dépasse la taille de document maximale. Alors, comment beaucoup de valeurs que vous pouvez avoir dans la clause dépend de chaque valeur est (plus la taille de chaque valeur est élevée, plus vous pouvez inclure dans le montant de la clause).
En termes de performances, de ce que j'ai trouvé, il y a un "sweet spot" pour le nombre de valeurs dans un $dans la clause. Voir ma réponse à cette question: Est-il OK pour interroger une MongoDB plusieurs fois par la demande?
c'est à dire l'équilibrage nombre de valeurs dans $à la clause vs le nombre de requêtes envoyées. Je suis à mi-chemin à travers un blog sur que d'essayer et de plonger dans le détail.