Se parece a $addToSet está haciendo lo mismo que su comando:$push with a $ne check . Ambos serían O(N)
https://github.com/mongodb /mongo/blob/master/src/mongo/db/ops/update_internal.cpp
si la velocidad es realmente importante, ¿por qué no usar un hash?:
en lugar de:
{'$addToSet': {'a':1}}
{'$addToSet': {'a':10}}
usar:
{$set: {'a.1': 1}
{$set: {'a.10': 1}