MongoDB создать уникальное поле, но не проиндексированы? - PullRequest
0 голосов
/ 20 января 2019

Есть ли какая-либо опция, с помощью которой в Mongo я могу сделать поле как unique, но не index, потому что, поскольку каждый индекс занимает некоторое пространство, а также вызывает накладные расходы на каждую вставку, обновление и удаление, и поскольку я редко собираюсь использовать это поле для операций чтения, именно поэтому я хочу ограничить уникальность, но не хочу какого-либо увеличения производительности с помощью индексации.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

В качестве альтернативы, вы можете использовать пользовательское значение для поля _id, которое:

  • должно присутствовать в каждом документе
  • требуется иметь уникальное значение в пределахколлекция
  • , проиндексированная по умолчанию

В разделе Имена полей :

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

Если вы не предоставляете поле _id при вставке документа, MongoDBсоздаст его для вас, используя ObjectId .

Если ваше требование требует использования уникального ограничения, и вы не хотите создавать дополнительный индекс для обеспечения уникальности, просто используйте _id поле.

0 голосов
/ 20 января 2019

Насколько я знаю, нет пути и нет причин делать это.Что вы подразумеваете под

накладными расходами при каждой вставке, обновлении и удалении

Эти накладные расходы связаны с уникальными ограничениями, а не с индексами.

каждый индекс занимает некоторое пространство

Да, конечно, для хранения индексов на HDD или SSD требуется некоторое пространство, но пока вы не сделаете read/query, он не будетвлияет на выполнение других операций.

Подробнее: MongoDB Внутренняя реализация индексации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...