2017-02-12 10 views
0

Ich bin neu in MongoDB und versuche, MongoDB einen Fehler zu verursachen, wenn ich ein anderes Dokument mit demselben Index einfüge. Nach diesem sollte MongoDB einen Fehler werfen.MongoDB-Duplikat-Index löst keinen Fehler aus

Die Schritte, die ich gemacht habe, sind: 1.) Fügen Sie einen Index zum Namensfeld hinzu. Ich festgestellt, dass es hinzugefügt wird:

> 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.) Ich habe versucht, Dokument mit dem gleichen Namen hinzufügen und konnte es hinzuzufügen:

> 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" 
} 

Ich bin mit C# MongoDB-Treiber 2.4.

+1

Wie erstellen Sie den Index? Ich denke Indizes sind nicht einzigartig. Erfahren Sie, wie Sie den eindeutigen Index erzwingen und versuchen Sie es erneut. https://docs.mongodb.com/manual/core/index-unique/#unique-indexes – Saleem

Antwort

0

Sie müssen angeben, dass der von Ihnen erstellte Index eindeutig ist, andernfalls wird MongoDB ihn nicht erzwingen. Sie können das mit dem C# -Treiber unter Verwendung derKlasse tun.

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

Beachten Sie, dass die Indexerstellung wird scheitern, wenn es zur Zeit Namen in der Sammlung duplizieren sind.

Verwandte Themen