Я безрезультатно пытаюсь найти документацию о том, как создавать многопольные индексы в Mongoosejs. В частности, у меня есть два поля, которые должны быть индексированы и уникальны. Каков пример схемы мангуста, которая индексирует два поля вместе?
Создание многополевых индексов в Mongoose / MongoDB
Ответы (4)
Для этого вы вызываете метод index
на своем Schema
объекте, как показано здесь. В вашем случае это будет примерно так:
mySchema.index({field1: 1, field2: 1}, {unique: true});
person
JohnnyHK
schedule
24.09.2012
В mongodb это называется Compount Index. Таким образом, он создает индексы как field1 и field1 + field2. Таким образом, это первый индекс в соответствии с field1, а затем внутри field1 по отношению к полю 2
- person Ketan Ghumatkar; 24.07.2015
что означает 1 после field1: и field2:?
- person Damon Yuan; 26.10.2015
@DamonYuan Они устанавливают порядок сортировки полей в индексе.
1
по возрастанию, -1
по убыванию.
- person JohnnyHK; 27.10.2015
@KetanGhumatkar Как вы уверены, что это поле1 и поле1 + поле2, а не наоборот, т.е. поле2 и поле2 + поле1?
- person Praveen; 26.10.2016
@KetanGhumatkar Это основано на порядке перечисления полей в объекте при вызове
index
.
- person JohnnyHK; 26.10.2016
1
и -1
задают ключ индекса по возрастанию или убыванию в поле индекса. Я нашел документы http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes
- person Thai Ha; 11.02.2019
Я не думаю, что
unique
работает с составными индексами.
- person OhadR; 27.04.2020
Создание параметра индекса с использованием кода работает, если для параметра autoIndex установлено значение true, однако это не очень хорошая практика в производственной среде, поскольку создает значительную нагрузку. mongoosejs.com/docs/guide.html#indexes.
- person nitin1416; 11.02.2021
Определение индексов на уровне схемы необходимо при создании составных индексов.
animalSchema.index({ name: 1, type: -1 });
Ссылка: http://mongoosejs.com/docs/guide.html#indexes
person
Krumb
schedule
09.04.2014
Что означают 1 и -1? Я не смог найти этого в документации, на которую вы ссылались. Спасибо.
- person DFB; 21.05.2015
Я нашел ответ на этой странице: docs.mongodb.org/manual/core/indexes -введение Спасибо!
- person DFB; 21.05.2015
Кстати, принятый ответ неверен, согласно https://stackoverflow.com/a/52553550/129300 вы имена полей следует заключать в одинарные кавычки, то есть:
mySchema.index({'field1': 1, 'field2': 1}, {unique: true});
Счастливый день!
person
Fer Martin
schedule
19.03.2020
Ключи объектов в JS можно не заключать в кавычки, если они являются синтаксически допустимыми идентификаторами.
field1
и field2
- допустимые идентификаторы. field1.foo
, например, нет.
- person Gus; 29.04.2020
Following command can be used to create compound index for nested json:
db.ACCOUNT_collection.createIndex({"account.id":1,"account.customerId":1},{unique:1})
Mongo json structure is like :
{"_id":"648738"
"account": {
"id": "123",
"customerId": 7879,
"name": "test"
..
..
}
}
Я протестировал с образцами данных, он отлично работает, как ожидалось.
person
Rajeev Rathor
schedule
23.04.2018
Мы не хотим этого с оболочкой mongooses, мы хотим, чтобы с схемой node js
- person Rohit Nishad; 31.05.2020