Ini adalah proposisi yang adil dalam pertanyaan Anda, namun pada dasarnya Anda memiliki konsep yang salah.
Yang pertama adalah Anda telah melewatkan konsep bahwa array pada umumnya memiliki entri yang dimulai dari indeks 0
untuk elemen pertama, jadi "pemosisian" Anda keluar satu unit dalam hal ini dan seharusnya:
db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
Dan karena Anda sekarang memasukkan pada posisi yang benar, maka elemen Anda berada di tempat yang benar.