You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:00:58