MongoDB: Как создать индекс для поля, вложенного в два массива? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть схема Mon go, которая по существу имеет два вложенных массива, каждый из которых содержит объекты. Я хотел бы создать индекс для поля, вложенного в этот массив второго уровня. Схема выглядит так:

const restaurantsSchema = new Schema({
  restaurantName: { type: String, required: true },
  dishes: [{
    dishName: String,
    price: Number,
    description: String,
    reviews: [{
      reviewId: Number,  **<<<< INDEX THIS FIELD**
      userId: {
        type: Schema.Types.ObjectId,
        ref: 'users',
        required: true,
      },
      photoUrl: String,
      caption: String,
      createdAt: Number,
      updatedAt: Number,
      rating: Number,
      reviewText: String,
    }],
  }],
});

Идея состоит в том, что я могу использовать этот индекс для поиска и обновления отзывов пользователей. Возможно ли это с помощью многопользовательской индексации Mon go или есть другой способ сделать это? Любая помощь будет оценена.

1 Ответ

0 голосов
/ 12 апреля 2020

Я считаю, что если вы измените схему на

reviewId: {
    type: Number,
    unique: true
}

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

напишите, если это работает!

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