Welcome to the MongoDB Community @limian_huang!
The problem you are observing is a side effect of how JavaScript treats objects with numeric keys (or keys that look like numbers). JavaScript interpreters will sort numeric key names ahead of alphanumeric key names, which leads to unexpected outcomes where order is important (for example, MongoDB index definitions). This behaviour is part of the JavaScript specification: ECMAScript 2015 Language Specification – ECMA-262 6th Edition.
My strong recommendation would be to use alphanumeric keys and avoid numeric keys (or strings that look like numbers). You can also use an order-preserving data structure like a Map in JavaScript, but this will still be an easy path to bugs.
Earlier discussion: Sorting multiple fields produces wrong order - #3 by Stennie.
Regards,
Stennie