Как объявить первичный ключ в mongodb? создать индекс, не зная его значения

Привет, мне нужно создать первичный ключ.

Если я вставлю { "name":"test1", "age":10} а потом { "name":"test1", "age":20}.

если мне нужно, чтобы это имя было первичным ключом, мне нужно создать индекс:

db.collection.createIndex( { "name": "test1" }, { unique: true } )

Но я думаю, что это не решит проблему, если я вставлю 1000 имен, после каждой вставки мне нужно создать индекс? Есть ли лучшее решение?

Спасибо

docs.mongodb.com/manual/core/index-unique
Ayush Gupta 26.12.2020 14:59

да я пример привел....

Victor 26.12.2020 20:54
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

если я вставлю 1000 имен, после каждой вставки мне нужно создать индекс?

Нет. Вы бежите createIndex только один раз.

Редактировать: Кроме того, вы неправильно создаете индекс. Извините, я только что заметил это после вашего комментария в этом ответе.

Правильный синтаксис для создания уникального индекса:

db.collection.createIndex( { "field_name": 1 }, { unique: true } )

Значение после "field_name": — это не значение самого поля, а направление индекса. Может быть:

* 1: по возрастанию

*-1: по убыванию

Итак, в вашем случае вы сделаете следующее, чтобы создать уникальный индекс с именами в порядке возрастания:

db.collection.createIndex( { "name": 1 }, { unique: true } )

Тем не менее, вы должны знать следующее:

  1. Создание уникального индекса не удастся, если у вас уже есть дублирующийся контент в поле name. Таким образом, лучше всего создавать индекс перед добавлением документов в коллекцию.
  2. Если вы вставляете документы, не содержащие поля name, для первого автоматически будет создано поле "name": null. Следующий документ без этого поля не будет вставлен из-за уже существующего документа с "name": null.

Подробнее здесь

Я не понимаю, как я могу создать уникальный индекс, если в этот индекс необходимо передать имя или номер? и каждая строка имеет другое значение.

Victor 26.12.2020 20:51

если я создаю и индексирую, это только с одним значением, но в этом случае мне нужен индекс не для значения, а для столбца или ключа. Мне нужно, чтобы ключ был уникальным, а не чтобы ключ = 1 был уникальным или ключ = 2 был уникальным

Victor 26.12.2020 20:56

Прости, @Виктор. Я только заметил, что вы неправильно создавали индекс после ваших комментариев выше. Я обновил свой ответ. Надеюсь, поможет :)

Caconde 27.12.2020 13:38

Другие вопросы по теме