问题描述:

  上周有个需求,把mongodb中birthday (ISO日期格式) 转换成北京时间,并保存成string类型。

最初思路:

  遍历查找出的结果,逐个加8小时,然后通过_id逐个去update_one。但是发现这种方式效率太低了,一分钟才能更新一千五百条数据。

  

# -*- coding: utf-8 -*-
from pymongo import MongoClient
import time
import datetime


def init():
    myclient = MongoClient(host='*.*.*.*', port=27117)
    # admin为登陆校验库
    auth_db = myclient.admin
    auth_db.authenticate('admin', '1234')
    # 连接库
    mydb = myclient['SR_123']
    mycol = mydb['Data_170724145755025001_0305_copy4']
    print(time.time())
    count = 0
    # 只取有birthday的数据,且只返回_id和birthday
    for x in mycol.find({'birthday':{'$exists': True}},{'_id','birthday'}):
        count = count + 1
        print(count)
        _time = x.get('birthday')
        _time += datetime.timedelta(hours=8)
        timeStr = _time.strftime("%Y%m%d")
        _id = x.get('_id')
        query1 = {"_id": _id}
        newvalues = {"$set": {"birthdayStr": timeStr}}
        mycol.update_one(query1, newvalues)
    print(time.time())

init()
View Code

相关文章:

  • 2022-12-23
  • 2022-03-15
  • 2022-02-23
  • 2022-12-23
  • 2021-07-12
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-24
  • 2021-12-21
  • 2021-12-21
  • 2021-11-04
相关资源
相似解决方案