根据_id 更新查询mongo 数据

_id 是mongo 的对象,python从mongo中读出来的数据类型是str 或者object 类

_id 是str类型时存在使用_id 更新数据失败的情况

解决办法 时导入 bson 里面的  ObjectId

import pandas as pd
import pymongo
from bson import ObjectId
client = pymongo.MongoClient().history_event_old['time_info']
path = 'history_event_old.xlsx'
df = pd.read_excel(path, keep_default_na=False)
values = df.values
for data in values:
    _id = data[0]
    print(_id)
    start_time = data[2]
    end_time = data[3]
    client.update_one({"_id": ObjectId(_id)}, {"$set": {"开始时间": start_time, '结束时间': end_time}})

bson模块

是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型;
BSON有三个特点:轻量性、可遍历性、高效性,但是空间利用率不是很理想
MongoDB使用了BSON这种结构来存储数据和网络数据交换;
比如
这是MongoDB 中的一条记录 也是 一个简单的BSON结构体,其中每一个element都是由key/value对组成的
把这种格式转化成文档这个概念(Document),因为BSON是schema-free的,所以在MongoDB中所对应的文档也有这个特征 ;
Document可以嵌套 如 key: tagGroup marketing 是作为一个对象存在的

原文地址:https://www.cnblogs.com/lqn404/p/13885072.html