2017-02-12 14 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ドライバー2.4を使用しています。

+1

どのようにインデックスを作成しますか?インデックスは一意ではないと思います。一意のインデックスを適用する方法を参照して、もう一度お試しください。 https://docs.mongodb.com/manual/core/index-unique/#unique-indexes – Saleem

答えて

0

作成するインデックスが一意であることを指定する必要があります。そうでない場合、MongoDBはそれを強制しません。 CreateIndexOptionsクラスを使用してC#ドライバを使用することができます。

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

現在、コレクションに重複する名前がある場合、インデックスの作成は失敗します。

関連する問題