【问题标题】:MongoDB duplicate index does not throw errorMongoDB重复索引不抛出错误
【发布时间】:2017-02-12 11:10:58
【问题描述】:

我是 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。

【问题讨论】:

标签: mongodb mongodb-.net-driver


【解决方案1】:

您必须指定您正在创建的索引是唯一的,否则 MongoDB 将不会强制执行它。您可以使用 C# 驱动程序使用 CreateIndexOptions 类来做到这一点。

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

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

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 2022-07-26
    • 2013-08-03
    • 2015-11-02
    • 2020-09-29
    • 2014-04-16
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多