MongoDB 重复索引不会抛出错误
MongoDB duplicate index does not throw error
我是 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.
您必须指定您正在创建的索引是唯一的,否则 MongoDB 将不会强制执行。您可以使用 C# 驱动程序使用 CreateIndexOptions
class.
roomCollection.Indexes
.CreateOne(
Builders<Room>.IndexKeys.Ascending(r => r.Name),
new CreateIndexOptions() { Unique = true });
请注意,如果集合中当前存在重复名称,索引创建将失败。
我是 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.
您必须指定您正在创建的索引是唯一的,否则 MongoDB 将不会强制执行。您可以使用 C# 驱动程序使用 CreateIndexOptions
class.
roomCollection.Indexes
.CreateOne(
Builders<Room>.IndexKeys.Ascending(r => r.Name),
new CreateIndexOptions() { Unique = true });
请注意,如果集合中当前存在重复名称,索引创建将失败。