PyMongo为何字面插入至collection集合?目标集合插入异常咨询
问题分析与解决:MongoDB 插入集合时的名称错误问题
哦,我太懂这个坑了!你这里踩了一个非常容易犯的小错误——当你写db.collection.insert_one()的时候,Python会把collection当成MongoDB数据库的字面量属性名,而不是你之前定义的那个变量,所以它直接创建了一个名为collection的集合来存数据,完全偏离了你想要的mycollection。
咱们拆解下你的代码问题:
client = MongoClient() db = client['mydb'] collection = db['mycollection'] db.collection.insert_one({"id": "hello"}) # 这里是错误的根源!
这里的db.collection等价于db['collection'],相当于你直接告诉MongoDB:“给我找个叫collection的集合”,和你之前赋值的collection变量没有任何关系。
正确的写法有两种:
- 直接用你提前定义好的
collection变量调用插入方法:
client = MongoClient() db = client['mydb'] collection = db['mycollection'] collection.insert_one({"id": "hello"}) # 正确!直接复用变量
- 如果不想用变量,直接通过字典式访问明确指定集合名称:
client = MongoClient() db = client['mydb'] db['mycollection'].insert_one({"id": "hello"}) # 正确!直接指定目标集合
小提示
在Python操作MongoDB时,用.访问集合的方式,会把后面的字符串直接当作集合的字面名称;而用[]或者提前赋值的变量,才会指向你真正想要的目标集合。别把这两种访问方式搞混啦!
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

