【发布时间】:2019-09-30 08:19:51
【问题描述】:
我现在正在研究实时开盘价-高-低-收盘价数据。我想找到每个库存商品的最高价和最低价的时间戳。
{ '_id': ObjectId('5d8db3700a1650f211831f16'),
'isuLists': [ { 'hgprc': 8100,
'isuSrtCd': '000020',
'lwprc': 8100,
'opnprc': 8100,
'trdPrc': 8100},
{ 'hgprc': 0,
'isuSrtCd': '000040',
'lwprc': 0,
'opnprc': 0,
'trdPrc': 500},
{ 'hgprc': 10050,
'isuSrtCd': '000050',
'lwprc': 10050,
'opnprc': 10050,
'trdPrc': 10050},
...
similar data continues
...
{ 'hgprc': 0,
'isuSrtCd': '700001',
'lwprc': 0,
'opnprc': 0,
'trdPrc': 9305},
{ 'hgprc': 3310,
'isuSrtCd': '900140',
'lwprc': 3310,
'opnprc': 3310,
'trdPrc': 3310}],
'trdDd': '20190927',
'trdTm': '090000'
},
...
{ '_id': ObjectId('5d8d51000a1650f211826c9a'),
'isuLists': [ { 'hgprc': 8130,
'isuSrtCd': '000020',
'lwprc': 7880,
'opnprc': 8100,
'trdPrc': 7980},
{ 'hgprc': 508,
'isuSrtCd': '000040',
'lwprc': 498,
'opnprc': 504,
'trdPrc': 500},
{ 'hgprc': 10050,
'isuSrtCd': '000050',
'lwprc': 9720,
'opnprc': 10050,
'trdPrc': 9780},
...
similar data continues
...
{ 'hgprc': 0,
'isuSrtCd': '700001',
'lwprc': 0,
'opnprc': 0,
'trdPrc': 9305},
{ 'hgprc': 3310,
'isuSrtCd': '900140',
'lwprc': 3230,
'opnprc': 3265,
'trdPrc': 3300}],
'trdDd': '20190927',
'trdTm': '155959'
}
数据从 9:00 到 16:00 每两秒累积一次(看看上面的trdTm)。
我设法使用下面的代码找出opnprc和clsprc的时间戳,但找不到最高hgprc和最低lwprc的时间戳。
[
{"$unwind": "$isuLists"},
{"$match": {"isuLists.lwprc": {'$gt': 0}}},
{
'$group': {
'_id': '$isuLists.isuSrtCd',
'opnTm': {'$first': '$trdTm'},
'clsTm': {'$last': '$trdTm'}
}
}
]
我想为每个isuSrtCd(问题代码)找到最高hgprc和最低lwprc的trdTm(交易时间)。
如何找到以下输出?
{issue code(isuSrtCd), timestamp(trdTm) of the highest 'hgprc', timestamp(trdTm) of the lowest 'lwprc'}
对于每个问题代码
[
{'_id': '000020', 'hgTm': '110233', 'lwTm': '135205'},
{'_id': '000040', 'hgTm': '142411', 'lwTm': '095233'},
{'_id': '000050', 'hgTm': '110255', 'lwTm': '140017'},
...
{'_id': '900140', 'hgTm': '105931', 'lwTm': '095329'},
]
感谢您的宝贵时间。
【问题讨论】:
标签: mongodb nosql mongodb-query