所以有一点背景,我曾在mongodb中使用mongoose.js在node.js中工作过。现在我决定尝试使用python和pymongo。但是当我尝试将文档插入到我的收藏中时,我只是得到一个错误:
pymongo.errors.DuplicateKeyError: E11000 duplicate key error index: database.emails.$email_1 dup key: { : "mail@example.com" }
我一直在互联网上寻找一个解决方案,既可以在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":"mail@example.com", "name":"bob"})
如果数据库中没有文档,则插入正常。但是,如果我再次尝试插入相同的内容,我会得到DuplicateKeyError。就好像mongodb希望所有的游戏都有一个独特的或我误解的过程?
我正在使用最新版本的pymongo。
答案 0 :(得分:1)
pymongo.errors.DuplicateKeyError:E11000重复键错误索引:database.emails。$ email_1 dup key:{:" mail@example.com" }
根据错误判断,您实际上为email
字段定义了唯一索引。
仅供参考,您可以使用index_information()
方法获取索引信息:
self.collection.index_information()