У меня есть данные, загруженные из API, который содержит годовые данные (252 дня).Каждый день он будет обновлять значения в новый день.Например (предполагается, что данные возвращаются только за 2 дня), сегодня API вернул t, t-1.Затем, tmr, API вернет t, t + 1.
Как я могу обновить базу данных в mongodb для хранения данных от t-1 до t + 1?Я пробовал $ addToSet и $ Push.Вот пример документа:
{
"_id" : ObjectId("5bc838e7af72c90c5c2550df"),
"Ticker" : "AAPL",
"Daily" : [
{
"date" : "2017-10-17",
"open" : 157.4,
"high" : 158.4738,
"low" : 156.8582,
"close" : 158.0798,
"volume" : 18997275,
"unadjustedVolume" : 18997275,
"change" : 0.581211,
"changePercent" : 0.369,
"vwap" : 157.654,
"label" : "Oct 17, 17",
"changeOverTime" : 0
},
{
"date" : "2017-10-18",
"open" : 158.0305,
"high" : 158.3162,
"low" : 157.2227,
"close" : 157.3803,
"volume" : 16374164,
"unadjustedVolume" : 16374164,
"change" : -0.699423,
"changePercent" : -0.442,
"vwap" : 157.7015,
"label" : "Oct 18, 17",
"changeOverTime" : -0.00442498029476252
}}
Но, когда я загружаю данные из API на следующий день и использую обновление для обновления документов:
db.getCollection('HistoricalData').update(
{"Ticker":'AAPL'},
{"$addToSet":{"Daily":[{'date': '2017-10-18',
'open': 158.0305,
'high': 158.3162,
'low': 157.2227,
'close': 157.3803,
'volume': 16374164,
'unadjustedVolume': 16374164,
'change': -0.699423,
'changePercent': -0.442,
'vwap': 157.7015,
'label': 'Oct 18, 17',
'changeOverTime': -0.004424980294762521},
{'date': '2017-10-19',
'open': 154.4152,
'high': 154.7403,
'low': 152.7109,
'close': 153.6567,
'volume': 42584166,
'unadjustedVolume': 42584166,
'change': -3.7237,
'changePercent': -2.366,
'vwap': 153.4613,
'label': 'Oct 19, 17',
'changeOverTime': -0.027980172039691376}]}},
{"upsert":true}
)
Это даст мненовый документ, вставленный как элемент в список.Пока что хочу:
{
"_id" : ObjectId("5bc838e7af72c90c5c2550df"),
"Ticker" : "AAPL",
"Daily" : [
{
"date" : "2017-10-17",
"open" : 157.4,
"high" : 158.4738,
"low" : 156.8582,
"close" : 158.0798,
"volume" : 18997275,
"unadjustedVolume" : 18997275,
"change" : 0.581211,
"changePercent" : 0.369,
"vwap" : 157.654,
"label" : "Oct 17, 17",
"changeOverTime" : 0
},
{
"date" : "2017-10-18",
"open" : 158.0305,
"high" : 158.3162,
"low" : 157.2227,
"close" : 157.3803,
"volume" : 16374164,
"unadjustedVolume" : 16374164,
"change" : -0.699423,
"changePercent" : -0.442,
"vwap" : 157.7015,
"label" : "Oct 18, 17",
"changeOverTime" : -0.00442498029476252
},
{'date': '2017-10-19',
'open': 154.4152,
'high': 154.7403,
'low': 152.7109,
'close': 153.6567,
'volume': 42584166,
'unadjustedVolume': 42584166,
'change': -3.7237,
'changePercent': -2.366,
'vwap': 153.4613,
'label': 'Oct 19, 17',
'changeOverTime': -0.027980172039691376}]}
}