Bạn không cần ký hiệu đầy đủ vì trình giữ chỗ đã di chuyển đến vị trí đó trong mảng.
db.junk.update(
{ "commandes.voyagesSouscrits.idVoyage": "123" },
{$pull: { "commandes.$.voyagesSouscrits": { idVoyage: "123" } }}
)
Phần này:
idVoyage: { <query> }
chỉ cần thiết vì toán tử vị trí trong " commandes. $. voyagesSouscrits "chỉ có thể khớp với đầu tiên vị trí mảng được tìm thấy trong truy vấn.
http://docs.mongodb.org/manual/reference/operator/projection/positional/
Hy vọng điều đó sẽ sáng tỏ.