Complejidad de tiempo de $ addToset vs $ push cuando el elemento no existe en el Array

Dado: la conexión es segura = verdadera, por lo que la devolución de la actualización contendrá información actualizada.

Digamos que tengo unos documentos que se parecen a:

[{'a': [1]}, {'a': [2]}, {'a': [1,2]}]

Y lo emito:

coll.update({}, {'$addToSet': {'a':1}}, multi=True)

El resultado sería:

{u'connectionId': 28,
 u'err': None,
 u'n': 3,
 u'ok': 1.0,
 u'updatedExisting': True
}

Incluso cuando vienen los documentos ya tienen ese valor. Para evitar esto podría emitir un comando.

coll.update({'a': {'$ne': 1}}, {'$push': {'a':1}}, multi=True)

¿Cuál es la comparación de complejidad de tiempo para $ addToSet vs. $ push con un cheque de $ ne?

Respuestas a la pregunta(3)

Su respuesta a la pregunta