2017-08-02 74 views
2

我使用pymongo(蟒蛇3.6與MLAB),我想更新我的集合中的所有文件。 在我的文檔,我已存儲這樣的數據:如何更新集合中的所有文件與pymongo

{ 
"_id": { 
    "$oid": "5981a77e1d41c81419b60414" 
}, 
"Ticker": "GOOGL", 
"Sector": "USTECH", 
"Market": "NASDAQ", 
"Data": [ 
    { 
     "Date": "Jul 27, 2017", 
     "Price": "966.41", 
     "Open": "969.52", 
     "High": "969.52", 
     "Low": "963.50", 
     "Vol": "743.92K", 
     "Change%": "0.11" 
    }, 
    { 
     "Date": "Jul 26, 2017", 
     "Price": "965.31", 
     "Open": "972.78", 
     "High": "973.95", 
     "Low": "960.23", 
     "Vol": "2.22M", 
     "Change%": "-0.38" 
    }]} 

我要更新所有的日期,使他們看起來像這樣: 1997年1月6日,而不是1月6,1997年 我有這個代碼:

connection = MongoClient(link) 
dbase = connection[db_name] 
collection = dbase.historicals 
client = collection.find() 
if client: 
    collection.update({}, "$set" : {"Data.Date":datetime.strptime('Date', '%b %d, %Y').date()}) 

connection.close() 

我已經試過update_many,但似乎整個更新語法是不正確的,就像如果它沒有得到接取日期字段。有小費嗎 ?

編輯:當我嘗試這種代碼:

client = collection.update_many({}, {"$set": {"Data": {"Date": '2000'}}}) 

它的工作原理,但是這一次不 client = collection.update_many({}, {"$set": {"Data": {"Date": datetime.strptime("Date", '%b %d, %Y').date()}}})

回答

1

嘗試刪除「數據」從你的更新查詢和前添加{}和「$ set」後

collection.update({}, {"$set" : {"Date":datetime.strptime('Date', '%b %d, %Y').date()}}) 
+0

謝謝回覆! 它仍然無法正常工作,但是當我用任何字符串替換datetime.strptime(「Date」,「%b%d,%Y」)。date()時,它可以工作, 我認爲它不接受操作裏面更新? –

+0

請你告訴你做了什麼錯誤?所以如果可能的話我可以幫你 –

+0

沒有語法錯誤,就像datetime.strptime在crud操作中不起作用一樣。使用 嘗試 林: 除外: 打印( 「錯誤」),所以基本上它總是跳轉到這個異常,每當我用 「datetime.strptime( '日期', '%B%d,%Y' ).date()」 但它完美的作品時,我用正常的字符串更新。 –

相關問題