![](/img/trans.png)
[英]How to convert a string date in mongodb to ISODate(), or DATE() and delete if it is less than 30 days using python?
[英]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.