2017-08-02 17 views
2

私はpymongo(mlabでpython 3.6)を使用しています。コレクション内のすべてのドキュメントを更新したいと思います。 は私の文書で、私はデータはこのように保存されています:コレクション内のすべてのドキュメントを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'}}}) 

を、しかし、この1つは 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() " しかし、通常の文字列で更新すると完全に動作します。 –

関連する問題