如何在PyMongo中通过ID批量更新MongoDB多文档字段
MongoDB批量更新文档失败的解决办法
- 第一个代码无更新的原因:
users_id是字符串列表,但MongoDB的_id默认是ObjectId类型,字符串与ObjectId不匹配,导致查询条件找不到对应文档。 - 第二个代码报错的原因:
ObjectId()只能接收单个字符串、字节或ObjectId实例,你直接传入了整个列表,所以触发类型错误。
正确的做法是将users_id列表中的每个元素单独转为ObjectId,代码如下:
from bson.objectid import ObjectId # 批量转换ID类型 target_ids = [ObjectId(uid) for uid in users_id] users = await user_collection.update_many( {"_id": {"$in": target_ids}}, {"$push": {"assigned_buildings": building_id}} )
注意:如果building_id也是字符串格式,且assigned_buildings字段存储的是ObjectId,同样需要用ObjectId(building_id)替换代码中的building_id。
内容的提问来源于stack exchange,提问作者Ignac96
相关产品推荐
相关产品推荐

