Es ist ein fairer Vorschlag in Ihrer Frage, aber Sie haben im Grunde das falsche Konzept.
Erstens haben Sie das Konzept übersehen, dass die Einträge von Arrays im Allgemeinen bei einem Index von 0
beginnen für das erste Element, also liegt Ihre "Positionierung" um eine Einheit daneben in diesem Fall und hätte lauten sollen:
db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
Und da Sie jetzt an der richtigen Position einfügen, sind Ihre Elemente an der richtigen Stelle.