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.
Wie wuld ich es machen, so dass die E-Mail oder anderes Feld ist kein eindeutiger Index? – magra
@Magra RTFM: https://docs.mongodb.org/manual/reference/method/db.collection.createIndex/#options – user161778
@ user161778, dass das Problem gelöst! – magra