2016-04-15 11 views
1

Also ein wenig Hintergrund, arbeitete Ive mit mongodb zuvor in node.js mit mongoose.js. Und jetzt habe ich beschlossen, mit Python und Pymongo zu arbeiten. Aber wenn ich versuche, meine Sammlung ein Dokument in einzufügen bekomme ich nur einen Fehler aus:E11000 doppelte Schlüssel Fehler Index pymongo

pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: database.emails.$email_1 dup key: { : "[email protected]" } 

Ich habe für eine Lösung im Internet araund gesucht sowohl in Python aber allso in anderen Sprachen. Es könnte sehr gut sein, dass Sinn iv nur mongoose.js verwendet hat, um mit Mongo vorher zu sprechen und dass ich die Grundlagen von mongodb nicht vollständig erfassen könnte.

Von model.py

from pymongo import MongoClient 

class Model(object): 
    client = MongoClient() 
    db = client["database"] 
    collection_name = "" 

    def __init__(self): 
     self.collection = self.db[self.collection_name] 

    def save(self, data): 
     self.collection.insert_one(data) 

Von Post.py

from model import Model 

class Post(Model): 

    collection_name = "emails" 

    def __init__(self): 
     super(Post, self).__init__() 

Und in app.py ich nur

from models.Post import Post 

post = Post() 
post.save({"email":"[email protected]", "name":"bob"}) 

Wenn kein Dokument in der Datenbank ist es fügt gut ein. Aber wenn ich versuche, das selbe wieder einzufügen, bekomme ich den DuplicateKeyError. Es ist so, als ob Mongodb erwartet, dass alle Felder eine einzigartige oder ich die Prozesse missverstanden haben?

Im mit der neuesten Version von Pymongo.

Antwort

1

pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: database.emails.$email_1 dup key: { : "[email protected]" }

durch den Fehler zu urteilen, haben Sie eigentlich einen eindeutigen Index für das email Feld definiert.

FYI, können Sie die Indexinformationen mit index_information() Methode erhalten:

self.collection.index_information() 
+0

Wie wuld ich es machen, so dass die E-Mail oder anderes Feld ist kein eindeutiger Index? – magra

+0

@Magra RTFM: https://docs.mongodb.org/manual/reference/method/db.collection.createIndex/#options – user161778

+0

@ user161778, dass das Problem gelöst! – magra

Verwandte Themen