Как вы можете указать порядок свойств в объекте javascript для индекса MongoDB в node.js?

Документация MongoDB гласит:

Для индексов с более чем одним ключом (т.е. составных индексов) важна последовательность полей.

Но ECMAScript определяет объект следующим образом:

Объект является членом типа Object. Это неупорядоченный набор свойств, каждый из которых содержит примитивное значение, объект или функцию.

При использовании MongoDB в node.js (например, используя этот модуль), вы используете javascript на стороне сервера, как в примере ниже.

Как вы указываете последовательность, когда MongoDB ожидает object (неупорядоченный набор свойств AKA)?

collection.ensureIndex({
    date    : -1,
    client  : 1,
    product : 1
});

Ответы

Ответ 1

В MongoDB порядок полей в документе действительно значителен, и все языковые драйверы предоставляют средство для указания документов таким образом, даже если базовый язык программирования не имеет такой концепции.

Формат документа, который использует MongoDB в своей оболочке, похож на JSON, но не является строгим JSON. Между прочим, порядок полей всегда сохраняется.

В Javascript стандарт определяет поля как неупорядоченные, поэтому реализации могут игнорировать/не сохранять порядок. Но на практике все реализации сохраняют порядок. В частности, V8 engine сохраняет порядок, который является двигателем, используемым в node.js, поэтому он не представляет проблемы.