MongoDB重复索引不会抛出错误

时间:2017-02-12 11:10:59

标签: mongodb mongodb-.net-driver

我是MongoDB的新手,当我插入具有相同索引的另一个文档时,尝试使MongoDB抛出错误。根据这个answer 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驱动程序2.4。

1 个答案:

答案 0 :(得分:0)

您必须指定您创建的索引是唯一的,否则MongoDB将不会强制执行它。您可以使用CreateIndexOptions类使用C#驱动程序执行此操作。

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

请注意,如果集合中当前存在重复的名称,则索引创建将失败。