簡體   English   中英

如何使用Python PyMongo將MongoDB日期字符串轉換並覆蓋到ISODate中?

[英]How to convert and over write MongoDB date string into ISODate using Python PyMongo?

我正在嘗試將許多格式為“ YYYY-MM-DD”的文檔字符串轉換為MongoDB中的ISODates,並已成功為具有所需效果的控制台編寫了此字符串:

db.address.find({ "date" : { $type : 2 } } ).forEach(function(element){  element.date = ISODate(element.date); db.address.save(element);})

我正在嘗試在Python中執行以下操作:

client = MongoClient(my_mongodb_ip)
db = client.address
result = db.address.find( { "date" : { "$type" : 2 } } );
for r in result:
    print(r['date'])
    r["date"] = datetime.strptime(r["date"], "%Y-%m-%d")
    print(r['date'])
    db.address.update_one({"company": r['company']},
         {"$set": {"date" : r['date']}})

我想提供以下內容:

"date": {
  "$date": "2017-06-28T00:00:00.000Z"
},

我沒有對數據庫的任何更新。

嘗試使用:

import dateutil.parser

dateutil.parser.parse(<your time String>)

您可以使用python中的arrow模塊實現此目標。 您要做的就是創建一個小的函數,該函數可以將日期作為參數並將其轉換為ISO格式。

這是您可以執行的操作:

import arrow

def convert_to_ISO_Format(self, value):
    date                          = arrow.get(value)
    date                          = date.format("YYYY-MM-DDTHH:mm:ss")
    date                          = date  + "Z"
    self.converted_date_iso = date

或者,如果您知道該州的地區並想要相應地進行轉換,則可以執行以下操作:

    def convert_to_ISO_Region(self,value):
        date                      = arrow.get(value)
        date                      = date.to("Asia/Singapore")
        date                      = date.format("YYYY-MM-DD HH:mm:ss")
        date                      = date  + "Z"
        self.converted_date_iso = date

                 OR

如果要將當前日期和時間轉換為ISO,則非常簡單,就像下面的一條語句一樣。

arrow.utcnow().datetime

希望對您的問題有所幫助。

我弄清楚這里出了什么問題。 無需導入箭頭或解析器,datetime可以正常工作:

newest_date = datetime.strptime(r["date"], "%Y-%m-%d")

假設格式為YYYY-MM-DD,這將從我的集合中的“日期”項創建新的datetime對象。 一旦我弄清楚了,我也一直在錯誤地將.isoformat()放在此創建字符串的末尾,不知道為什么要這樣做。

刪除了不正確的isoformat()之后,我現在可以運行:

db.address.update_one({"address": "1234", {"$set": {"date" : newest_date}})

並且地址將正確更新為類型9,即日期對象而不是字符串。 我檢查了這個:

db.address.find({ "date" : { $type : 9 } } )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM