MongoDB Уникальная проблема индекса в массиве вложенных документов - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть такой документ:

{
   _id : ObjectID(),
   title: "",
   items: [
      {
         "itemId" : 1234678,
      }
   ]
}

itemId - это уникальный индекс, созданный так:

db.allItems.createIndex( { "items.itemId" : 1 }, { unique: true});

И затем все работает нормально, пока я не установлю массив элементов (не нажатием одной), в этом случае уникальный индекс не работает. Следующие данные в операции обновления (с использованием $set) не выдают ошибку и работают нормально, что НЕ ДОЛЖНО. Я имею в виду, что он создает поддокумент без какой-либо уникальной ошибки

items: [
  {
    itemId: 1234678
  },
  {
    itemId: 1234678
  }
]

Хотя я ожидаю, что MongoDB выдаст ошибку, что itemId не является уникальным.

1 Ответ

1 голос
/ 05 февраля 2020

Уникальность индекса MongoDb применима для документов, а не для вложенных массивов.

Если вы попытаетесь вставить новый документ с:

items: [
  {
     "itemId" : 1234678,
  },
  ...
]

MonogDB выдаст E11000 duplicate key error collection

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