如何使用pymongo更新集合中的所有文档

时间:2017-08-02 11:07:55

标签: python pymongo

我正在使用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()}}})

1 个答案:

答案 0 :(得分:1)

尝试删除"数据"来自您的更新查询并在" $ set"之前和之后添加{}

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