2017-02-12 16 views
0

Я новичок в MongoDB и пытаюсь сделать MongoDB ошибкой при вставке другого документа с тем же индексом. В соответствии с этим answer MongoDB должен выбросить ошибку.MongoDB дублирующий индекс не выдает ошибку

Действия, которые я выполнил: 1.) Добавьте индекс в поле «Имя». Я проверил, что он добавил:

> db.room.getIndexes() 
[ 
     { 
       "v" : 1, 
       "key" : { 
         "_id" : 1 
       }, 
       "name" : "_id_", 
       "ns" : "test.room" 
     }, 
     { 
       "v" : 1, 
       "key" : { 
         "Name" : 1 
       }, 
       "name" : "Name_1", 
       "ns" : "test.room" 
     } 
] 

2.) Я пытался добавить документ с таким же именем и был в состоянии добавить:

> db.room.find().pretty() 
{ 
     "_id" : 1, 
     "ModifiedDate" : ISODate("2017-02-12T10:59:35.394Z"), 
     "CreatedDate" : ISODate("2017-02-12T10:59:35.394Z"), 
     "Name" : "Sample" 
} 
{ 
     "_id" : 2, 
     "ModifiedDate" : ISODate("2017-02-12T10:59:39.474Z"), 
     "CreatedDate" : ISODate("2017-02-12T10:59:39.474Z"), 
     "Name" : "Sample" 
} 

Я использую C# MongoDB Driver 2.4.

+1

Как вы создаете индекс? Я считаю, что индексы не уникальны. Посмотрите, как обеспечить уникальный индекс и повторите попытку. https://docs.mongodb.com/manual/core/index-unique/#unique-indexes – Saleem

ответ

0

Вы должны указать, что создаваемый вами индекс уникален, иначе MongoDB не будет применять его. Вы можете сделать это с помощью драйвера C#, используя класс CreateIndexOptions.

roomCollection.Indexes 
    .CreateOne(
     Builders<Room>.IndexKeys.Ascending(r => r.Name), 
     new CreateIndexOptions() { Unique = true }); 

Обратите внимание, что создание индекса не будет выполнено, если в коллекции есть дубликаты имен.

 Смежные вопросы

  • Нет связанных вопросов^_^