2016-04-15 94 views
1

所以有一點背景,我以前用mongodb在mongoose.js的node.js中工作過。現在我決定嘗試使用python和pymongo。但是,當我嘗試插入一個文件到我的收藏我只是得到一個錯誤關:E11000重複鍵錯誤索引pymongo

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

我一直在網上找araund兩個在python,但allso其他語言的解決方案。這很有可能是這樣的:iv只使用mongoose.js與mongo進行交談,並且我可能沒有完全掌握mongodb的基本知識。

從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) 

從Post.py

from model import Model 

class Post(Model): 

    collection_name = "emails" 

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

而在app.py我只是做

from models.Post import Post 

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

當在數據庫中沒有文件就可以了插入正常。但是,如果我嘗試再次插入相同,我得到DuplicateKeyError。這就好像mongodb希望所有的領域都有一個獨特的或即時的誤解過程?

我正在使用最新版本的pymongo。

回答

1

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

被錯誤判斷,你確實有對email場限定的唯一索引。

僅供參考,你可以使用index_information()方法索引信息:

self.collection.index_information() 
+0

因此,如何貴方覺得我還能保持這樣的電子郵件或任何其他方面是不是唯一的指標? – magra

+0

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

+0

@ user161778解決了問題! – magra

相關問題