Створення багатопольових індексів у Mongoose / MongoDB


93

Я безрезультатно намагаюся знайти документацію про те, як створити багатопольові індекси в Mongoosejs. Зокрема, у мене є два поля, які потрібно проіндексувати та унікально. Що таке приклад схеми мангуста, яка індексує два поля разом?

Відповіді:


196

Ви викликаєте indexметод на своєму Schemaоб'єкті, щоб зробити це, як показано тут . Для вашого випадку це було б приблизно так:

mySchema.index({field1: 1, field2: 1}, {unique: true});

2
Це називається Compount Index у mongodb. Тож він створює індекси як field1 та field1 + field2. Отже, це спочатку індекс відповідно до поля1, а потім всередині поля1 щодо поля 2
Кетан Гуматкар

1
що означає 1 після поля1: та поля2:?
Деймон Юань,

9
@DamonYuan Вони встановлюють порядок сортування полів в індексі. 1зростає, -1буде низхідним.
JohnnyHK

1
@KetanGhumatkar Це базується на порядку порядку перерахування полів у об’єкті у виклику index.
JohnnyHK

2
1і -1 вказує зростаючий або спадаючий ключ індексу в полі індексу. Я знайшов документи http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thai Ha

11

Визначення індексів на рівні схеми необхідно при створенні складених індексів.

animalSchema.index({ name: 1, type: -1 });

Довідково: http://mongoosejs.com/docs/guide.html#indexes


5
Що означає значення 1 та -1? Я не зміг знайти це в документації, на яку ви посилалися. Дякую.
DFB,

2
Відповідь я знайшов на цій сторінці: docs.mongodb.org/manual/core/indexes-introduction Дякую!
DFB,

0

До речі, прийнята відповідь є неправильною, оскільки згідно з https://stackoverflow.com/a/52553550/129300 ви повинні обертати імена полів в одинарні лапки, тобто:

mySchema.index({'field1': 1, 'field2': 1}, {unique: true});

Щасливий день!


Ключі об'єктів у JS можуть бути не вказаними, поки вони є синтаксично дійсними ідентифікаторами. field1і field2є дійсними ідентифікаторами. field1.fooне є, наприклад.
Гас

-3
    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"
   ..
   ..

  }
}

Я перевірив на вибіркових даних, що він чудово працює, як очікувалося.


Ми не хочемо, щоб з оболонкою mongooses ми хочемо, щоб це було із схемою node js
Рохіт Нішад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.