donnée: la connexion est sécurisée = TRUE de revenir de la mise à jour contiendra des informations de mise à jour.
Dites que j'ai un documents qui ressemblent à: p>
coll.update({'a': {'$ne': 1}}, {'$push': {'a':1}}, multi=True)
3 Réponses :
OK Depuis que je lis votre question de mal tout ce qui s'avère que vous regardez en fait deux requêtes différentes et en jugeant la complexité de temps entre eux. P>
La première requête étant: p> et le second étant: p> premier problème à l'esprit ici, aucun index. En réalité, vous cherchez. Pour tous les documents qui n'ont pas SO 2 Points à la deuxième requête, même avant d'entrer dans la complexité de temps ici parce que la première requête: p> J'ai donc fait à peu près mon esprit ici que la deuxième requête est ce que vous recherchez avant l'une des grosses trucs de notation. P> Il y a un problème à utiliser Big O Notation d'expliquer la complexité de temps de chaque requête ici: p> Cependant, la première requête ressemblerait à quelque chose comme: o (n) par document depuis: p> par collection, sans l'indice, ce serait: o (2n2) car la complexité de l'itération Le Deuxième requête, sans index, ressemblerait à quelque chose comme: o (2n2) (O (n) par document) Je crois que depuis ainsi basé sur la complexité du temps et les notes au début, je dirais que la requête 2 est meilleure. P> Si je suis Honnête, je ne suis pas habitué à expliquer dans la notation "Big O", donc c'est expérimental. p> espère qu'il aide, p> h2> $ addtoset code>, étant un modificateur de mise à jour, je ne crois pas qu'il utilise un index en tant que tel, vous faites une analyse de table complète pour accomplir ce dont vous avez besoin. P> 1 code> dans A code> déjà et cherchent à $ pousser code> la valeur 1 code> à ce < code> A code> tableau. p>
$ addtoSet code> li>
ul>
A code> mais pas utiliser index ne le fait pas. Li>
ul>
A code> augmentera de manière expulité avec chaque nouveau document. P> $ ne code> aurait les mêmes problèmes que $ addtoset code> sans index. Cependant, avec des index, je crois que cela serait effectivement O (log n journal) (O (log n) par document) car il trouverait d'abord tous les documents avec A code> dans tous les documents sans 1 code> dans leur ensemble sur la base de l'arbre B. P>
Eh bien, votre dernière ligne est ma question. Son ($ addtoset) vs ($ push + $ ne). Les deux travailleraient, mais si je devais les évaluer en termes de Big O, comment chaque score serait-il?
@ Meson10 Vous continuez à utiliser l'argot et je ne veux pas comprendre parce que je n'utilise pas le même argot que vous, quel est le "Big O"? De plus, j'édique que $ pousser est plus rapide pour "la complexité du temps".
En informatique, la complexité temporelle d'un algorithme quantifie la quantité de temps prise par un algorithme pour fonctionner en fonction de la taille de l'entrée au problème. La complexité de temps d'un algorithme est couramment exprimée à l'aide de la grosse notation, qui supprime des constantes multiplicatives et des termes inférieurs de l'ordre. Lorsqu'il est exprimé de cette façon, la complexité de temps est décrite asymptotiquement, c'est-à-dire que la taille d'entrée va à l'infini. Par exemple, si le temps requis par un algorithme sur toutes les entrées de taille N est au plus 5N3 + 3n, la complexité du temps asymptotique est O (N3) SMNR.ME/TNAP7N
@ Meson10 ok je ne suis pas habitué à battre autour de la brousse avec la syntaxe de mathématiques, mais je suis habitué à expliquer cela avec un anglais ordinaire, mais je après 50 minutes de lecture dans une grosse notation, pensez avoir pu traduire mon anglais en maths . Je vais éditer si je vois des erreurs.
Je pense que vous avez mal interprété ma question. Je ne comparais pas $ addtoset avec une poussée $ ne vs vs $. Je veux comparer $ addtoset vs ($ push + $ ne). Remarque: pensez-y, il n'y a pas de RED $ NE RECHERCHE pendant que je fais un $ addtoSet. Deuxièmement, la syntaxe «mathématiques» est un moyen plus standard de dénoter des métriques. Exemple: la voiture A est tellement plus rapide que B ou voiture A est 80kmph plus rapide que B :-)
@ meson10 ah j'ai été confus parce que vous avez montré la requête: col.update ({'a': {'$ ne': 1}}, {'$ addtoset': {'a': 1}}, multi = Vrai) code> C'est pourquoi j'ai donné cette réponse. Alors je pensais que c'était $ adtoset + $ ne pas vs $ ne + $ pousser
@ Meson10 Voulez-vous dire que vous voulez dire Big O notation par document Mise à jour atomique ou par mise à jour de la collecte, également à l'aide et non à l'utilisation d'index modifiera la grosse notation pour cela puisqu'il s'agirait d'un algorithme de journal sur $ NE mais pas sur $ addtoset qui signifie $ Addtoset est encore pire.
@ Meson10 Je ne suis pas sûr que c'est un bon exemple des différences depuis "plus rapide", est inutile, car un tel anglais était "80 km / h plus rapide". Je comparerais cela plus à dire en anglais clair que la voiture est de 80 km / h plus rapide et dans la notation de type Big O disant que O = T + 80 où T est égal à la vitesse de la voiture actuelle que vous mesurez. Bien sûr, la somme est en fait plus complexe que ça, mais vous voyez ce que je veux dire ...
ressemble à $ addtoset em> fait la même chose que votre commande: $ appuyez sur un chèque de $ NE em>. Les deux seraient o (n) Si la vitesse est vraiment importante, pourquoi ne pas utiliser de hachage: p> Au lieu de: p> Utilisation: p>
Hmm je dis addtoSet était O (n) pourtant je suis bownvoted ... il faut avoir tort
Ajout de mon observation en différence entre AddtoSet et appuyez sur la mise à jour en vrac de documents 100K.
Lorsque vous faites la mise à jour en vrac. AddtoSet sera exécuté séparément. P>
Par exemple, P>
db.collection_name.count() #gives around 40k
db.collection_name.count({"a":{$in:["b"]}}) # it gives only around 30k
Qu'entendez-vous par «Complexité du temps» Voulez-vous dire la quantité de temps prise par la comparaison par rapport à
$ pousser code>?Oui. Si $ pousser avec un NE $ va courir à travers tous les éléments, que je suppose $ addtoset fait aussi. Lequel des deux est optimal à utiliser?
$ Poussez facilement, car même si $ poussez-vous doit retirer le tableau (sous-documentation), il n'est pas nécessaire de se comparer à se mettre.