Stai dicendo che vuoi inserire solo se "dati" è univoco? In tal caso, potresti creare un vincolo univoco sui "dati" e aggiornarlo con SafeMode?
Sarei anche tentato di strutturare la tua chiave composita in questo modo;
db.so.insert(
{
_id: {
p0:1,
p1:0,
p2:0,
p3:0,
p4:0,
p5:0,
p6:0,
p7:0,
},
data:"apiceofdata",
}
);