How indexing works

I came to know that the $exist operator cannot use indexes at all.
for example db.mycol.find({x:{$exist:true}}) :cannot use index of x but
db.mycol.find({x:{$extist:false}}) can use index of x partially.

Why so? is it beacuse of exixtence of null values?