Đó là một đề xuất hợp lý trong câu hỏi của bạn, tuy nhiên về cơ bản bạn đã hiểu sai khái niệm.
Điều đầu tiên là bạn đã bỏ lỡ khái niệm rằng các mảng nói chung có các mục nhập của chúng bắt đầu từ chỉ mục 0
cho phần tử đầu tiên, vì vậy "định vị" của bạn bị một đơn vị trong trường hợp này và lẽ ra phải là:
db.collection.update(
{ _id: tsId },
{$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }}
)
Và vì bây giờ bạn đang chèn ở đúng vị trí, nên các phần tử của bạn đang ở đúng vị trí.