Дубликат индекса MongoDB не выдает ошибку

Я новичок в MongoDB и пытаюсь заставить 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 ответ

Решение

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

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

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

Другие вопросы по тегам