如何通过Python/PyMongo向DocumentDB/MongoDB插入NumberLong类型小整数值
如何在DocumentDB批量插入时强制将整数保存为NumberLong类型
直接使用{"$numberLong": str(int_value)}会报错,因为DocumentDB不允许文档字段名以$开头。正确的做法是利用驱动提供的Int64类型包装整数值,驱动会自动将其序列化为NumberLong类型存储。
实现步骤(以Python的pymongo驱动为例)
- 导入
bson.int64中的Int64类型 - 用
Int64()包装所有需要存储为NumberLong的整数值 - 构造批量数据列表后,调用
insert_many()完成插入
示例代码
from pymongo import MongoClient from bson.int64 import Int64 # 建立DocumentDB连接 client = MongoClient("你的DocumentDB连接字符串") db = client["目标数据库名"] collection = db["目标集合名"] # 构造批量插入的数据,所有整数用Int64包装 batch_records = [ {"id": Int64(1), "count": Int64(45)}, {"id": Int64(2), "count": Int64(100)}, {"id": Int64(3), "count": Int64(999999)} ] # 执行批量插入 collection.insert_many(batch_records)
说明
使用驱动提供的类型包装后,无论整数大小,都会被DocumentDB识别为NumberLong类型存储,避免了小整数自动转为普通Number类型的问题。
内容的提问来源于stack exchange,提问作者Rahman Shaik
相关产品推荐
相关产品推荐

