Mongodb 在MongoEngine中插入和嵌入文档
我正在构建一个从API中提取数据并将其保存到MongoDB的工具。我用Python3和MongoEngine来做这个 我能够提取数据并保存它。这是Mongo中的外观: 这是我用来保存数据的Python代码: 这很有效。但是我想每小时运行一次代码。那么如果有新的Mongodb 在MongoEngine中插入和嵌入文档,mongodb,python-3.x,pymongo,upsert,Mongodb,Python 3.x,Pymongo,Upsert,我正在构建一个从API中提取数据并将其保存到MongoDB的工具。我用Python3和MongoEngine来做这个 我能够提取数据并保存它。这是Mongo中的外观: 这是我用来保存数据的Python代码: 这很有效。但是我想每小时运行一次代码。那么如果有新的 "campaign_id": "345775", "zone_id": "5609698", 我要创建此(向上插入) 如果组合已经存储,我希望以这种方式将数据附加到嵌入的集合中 { "_id": ObjectId("5
"campaign_id": "345775",
"zone_id": "5609698",
我要创建此(向上插入)
如果组合已经存储,我希望以这种方式将数据附加到嵌入的集合中
{
"_id": ObjectId("5ac8afa99d74e2e592586946"),
"campaign_id": "345775",
"zone_id": "5609698",
"timeData": [
{
"t1": ISODate("2018-04-07T00:00:00Z"),
"t2": ISODate("2018-04-07T13:46:48Z"),
"clicks": 1,
"unique_clicks": 1,
"unique_visits": 15,
"conversions": 1,
"visits": 17,
"payout": 80
},
{
"t1": ISODate("2018-04-07T00:00:00Z"),
"t2": ISODate("2018-04-07T14:46:48Z"),
"clicks": 0,
"unique_clicks": 0,
"unique_visits": 1,
"conversions": 0,
"visits": 1,
"payout": 0
}
]
}
这是我在Pymongo中定义的数据库结构:
我尝试执行line.update(upsert=True)
而不是line.save()
提前谢谢 当TrackerData文档不存在时,执行一次将numline
推送到timeData
字段中的操作。e、 g
from mongoengine.errors import OperationError
try:
(
TrackerData.objects(
campaign_id=doc["campaign_id"],
zone_id=doc["token_1"]
)
.update(
push__timeData=numline, upsert=True
)
)
except OperationError as e:
logger.error(e)