所以有一点背景,我之前在mongoose.js的node.js中使用过MongoDB。现在我决定尝试使用python和pymongo。但是,当我尝试将文档插入集合中时,我得到一个错误:
pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: database.emails.$email_1 dup key: { : "[email protected]" }
我一直在互联网上寻找python和其他语言的解决方案。很有可能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。
pymongo.errors.DuplicateKeyError:E11000重复键错误索引:database.emails。$ email_1 dup键:{:“ [email protected]”}
根据错误判断,您实际上为email
字段定义了唯一索引。
FYI,您可以使用index_information()
方法获取索引信息:
index_information()