【发布时间】:2020-12-14 19:04:08
【问题描述】:
我有一个 python 请求以 json 格式返回 api 数据,如下所示:
[
{
'name': 'xyz',
'address': 'yyy'
},
{
'name': 'abc',
'address': 'ccc'
}
]
我想每天在 MongoDB 中加载这些数据,无论是否从 api json 响应输出中对地址进行了任何更改,以及每个文档插入/更新时添加的 datetimestamp 字段name json 对象中的键,如下所示:
{
'id' : objectid(123456),
'name': 'xyz',
'address': 'yyy'
'dttm' : 2020-08-26:01:20:30'
},
{
'id' : objectid(123457),
'name': 'abc',
'address': 'ccc'
'dttm' : 2020-08-26:01:20:30'
}
{
'id' : objectid(123458),
'name': 'xyz',
'address': 'zzzzzzzzzzzzzzzzzzz'
'dttm' : 2020-09-26:03:01:20'
},
{
'id' : objectid(123459),
'name': 'abc',
'address': 'ccc'
'dttm' : 2020-09-26:03:02:30'
}
]
在上面的示例中 - 名称“xyz”与之前的运行相比地址发生了变化,但名称“abc”没有变化,但仍以不同的日期时间戳加载
示例代码:
import requests
import json
from pymongo import MongoClient
url='xxx'
header={'Auth':'xyz', 'Content-Type': 'application/json'}
payload={}
api_data = requests.request("POST", url, data=json.dumps(payload), headers=header).json()
client = MongoClient('mongodb://localhost:27017')
db = client[test_db][test_collection]
db.update_one({api_data}, {$set:{dttm:datetime.today()}},{'upsert':True}) ##===>>what is the valid way to construct this using PyMongo ??
client.close()
【问题讨论】:
标签: mongodb python-requests pymongo upsert