2017-08-02 77 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()” 但它完美的作品时,我用正常的字符串更新。 –

相关问题