2016-04-15 135 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

相关问题