根据时间戳进行选择,并将时间戳更新为零

发布于 2021-01-29 14:59:17

如何从MongoDB集合中的时间(HH:MM:SS.Milisecond)值大于零的日期字段中选择记录,并通过保持日期的时间(HH:MM:SS)值为零来更新记录值是否与Python脚本中的现有值相同?

当前数据如下所示-

1) "createdDate" : ISODate("2015-10-10T00:00:00Z")
2) "createdDate" : ISODate("2015-10-11T00:00:00Z")
3) "createdDate" : ISODate("2015-10-12T00:00:00Z")
4) "createdDate" : ISODate("2015-10-13T01:04:30.515Z")
5) "createdDate" : ISODate("2015-10-14T02:05:50.516Z")
6) "createdDate" : ISODate("2015-10-15T03:06:60.517Z")
7) "createdDate" : ISODate("2015-10-16T04:07:80.518Z")

如何mongodbsql在Python脚本中仅选择第4、5、6和7行,并使用时间戳将其更新为零?

更新后,数据如下所示-

1) "createdDate" : ISODate("2015-10-10T00:00:00Z")
2) "createdDate" : ISODate("2015-10-11T00:00:00Z")
3) "createdDate" : ISODate("2015-10-12T00:00:00Z")
4) "createdDate" : ISODate("2015-10-13T00:00:00Z")
5) "createdDate" : ISODate("2015-10-14T00:00:00Z")
6) "createdDate" : ISODate("2015-10-15T00:00:00Z")
7) "createdDate" : ISODate("2015-10-16T00:00:00Z")
关注者
0
被浏览
69
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    最好的方式来更新您的文件,并set在时间00:00:00使用日期时间模块,因为createdDate是一个DateTime对象在Python中,这样你就可以使用datetime实例的属性dayyearmonth

    from datetime import datetime
    
    from pymongo import MongoClient
    
    client = MongoClient()
    db = client.test
    collection = db.collection
    bulkOp = collection.initialize_ordered_bulk_op()
    count = 0
    for doc in collection.find():
        year = doc['createdDate'].year
        month = doc['createdDate'].month
        day = doc['createdDate'].day
        new_date = datetime(year, month, day)
        bulkOp.find({'_id': doc['_id']}).update({'$set': {'createdDate': new_date}})
        count = count + 1
        if count == 125:
            bulkOp.execute()
            bulkOp = collection.initialize_ordered_bulk_op()
    
    if count % 125 != 0:
       bulkOp.execute()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看