Strange MongoDB Realm JS behavior

So this is a continuation of What the difference between MongoDB Realm JS and standard JS?

The bug mentioned there is still not fixed so I have to apply a workaround each time.

let objects = await db.collection("my-collection").find({}).limit(1).toArray();
const object1 = objects[0];
const objectID1 = object1._id;
console.log(typeof objectID1); // object
console.log(Object.prototype.toString.call(objectID1)); // [object ObjectId]
console.log(objectID1); // 61b102c0048b84e9c13e6429
console.log(objectID1.valueOf()); // 61b102c0048b84e9c13e6429
console.log(objectID1.toString()); // 61b102c0048b84e9c13e6429
console.log(JSON.stringify(objectID1)); // "61c42676a2660ba02db38e3d"

objects.sort(); // Breaks all ObjectId fields in each object contained in the array
const object2 = objects[0]; // Returns different object even though there was only one object
console.log(object1 == object2); // false
console.log(object1 === object2); // false
const objectID2 = objects[0]._id; // ObjectId field is broken
console.log(typeof objectID2); // object
console.log(Object.prototype.toString.call(objectID2)); // [object Object]
console.log(objectID2); // [object Object]
console.log(objectID2.valueOf()); // [object Object]
console.log(objectID2.toString()); // [object Object]
console.log(JSON.stringify(objectID2)); // {}

There is also another bug with number inclusion in array check


[0].forEach((number, index) => {
  console.log(number); // 0
  console.log(typeof number); // number
  console.log(Object.prototype.toString.call(number)); // [object Number]
  console.log(number.valueOf()); // 0
  console.log(number.toString()); // 0
  console.log(JSON.stringify(number)); // 0

  console.log(index); // 0
  console.log(typeof index); // number
  console.log(Object.prototype.toString.call(index)); // [object Number]
  console.log(index.valueOf()); // 0
  console.log(index.toString()); // 0
  console.log(JSON.stringify(index)); // 0

  console.log(number == index); // true
  console.log(number === index); // true
  console.log([0].includes(number)); // true
  console.log([0].includes(index)); // false <---------- O___o
})