Nepotřebujete úplný zápis, protože zástupný symbol se již přesunul na tuto pozici v poli.
db.junk.update(
{ "commandes.voyagesSouscrits.idVoyage": "123" },
{$pull: { "commandes.$.voyagesSouscrits": { idVoyage: "123" } }}
)
Tato část:
idVoyage: { <query> }
je potřeba pouze proto, že poziční operátor v "commandes.$.voyagesSouscrits “ může odpovídat pouze prvnímu pozice pole nalezená v dotazu.
http://docs.mongodb.org/manual/reference/operator/projection/positional/
Doufám, že to vyjasní.