繁体   English   中英

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

[英]How do I update all documents in a collection with 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()}}})

尝试从更新查询中删除“数据”,并在“$ set”之前和之后添加{}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM