我正在使用pymongo(python 3.6 with mlab),我想更新我的集合中的所有文档。 在我的文档中,我有这样的数据存储:
{
"_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而不是1997年1月6日。 我有这段代码:
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,但似乎整个更新语法都不正确,就好像它没有进入Date字段一样。有什么提示吗?
编辑:当我尝试这段代码时:
client = collection.update_many({}, {"$set": {"Data": {"Date": '2000'}}})
它有效,但这个没有
client = collection.update_many({}, {"$set": {"Data": {"Date": datetime.strptime("Date", '%b %d, %Y').date()}}})
答案 0 :(得分:1)
尝试删除"数据"来自您的更新查询并在" $ set"之前和之后添加{}
collection.update({}, {"$set" : {"Date":datetime.strptime('Date', '%b %d, %Y').date()}})