pymongo重复id错误,而第二次运行相同的代码

我第一次尝试pymongo,当我尝试在集合中插入数据时,起初它已成功创建,但是当我运行相同的脚本时,它会引发id复制错误。 我读到mongodb / pymongo本身会创建唯一的ID(如果我们不提及的话)。 我想使用id方法的自动生成,这对于繁重的数据库来说似乎很简单并且很好(不是吗?)。 该怎么做?

from pymongo import MongoClient

#step 1: connection

client = MongoClient(port=27017)
db=client["book"]
collection = db["book_booklist"]

#step 2: create sample data
data= {'name':'Great ideas','price':'100','Author':'gogo','issue_duration':'30'}


value= collection.insert_one(data)
print(value)

错误:第二次尝试 pymongo.errors.DuplicateKeyError:E11000重复键错误集合:book.book_booklist索引: primary_key dup键:{id:null}

carol0045 回答:pymongo重复id错误,而第二次运行相同的代码

每次尝试运行脚本时,您都可以尝试在python中手动初始化数据并将数据与ObjectId一起推送。

from pymongo import MongoClient
from bson.objectid import ObjectId

#step 1: connection

client = MongoClient(port=27017)
db=client["book"]
collection = db["book_booklist"]

#step 2: create sample data
data= {'_id': ObjectId(),'name':'Great ideas','price':'100','Author':'gogo','issue_duration':'30'}


value= collection.insert_one(data)
print(value)
  

注意:当您安装BSON软件包时,会自动安装pymongo个python模块。

,

详细阐述vikscool的评论:

>>> import pymongo
>>> conn = pymongo.MongoClient()
>>> doc = {'x':1,'y':1,'z':1}
>>> print(doc)
{'x': 1,'y': 1,'z': 1}
>>> conn.test.test.insert_one(doc)
<pymongo.results.InsertOneResult object at 0x1075a2410>
>>> print(doc)
{'x': 1,'z': 1,'_id': ObjectId('5dcb4293a6d58c694795bc9d')}

请注意,doc已通过insert_one()方法进行了突变。它添加了_id字段,因此当您尝试再次插入它时,它将抱怨重复的_id

本文链接:https://www.f2er.com/3119500.html

大家都在问