我在python中有以下代码来返回MongoDB所需的数据。
Data = db.dataset.aggregate([{
"$unwind": "$Records"
}, {
"$unwind": "$Records.Properties"
}, {
"$match": {
"Records.Properties.Property.Name": 'Data'
}
}, {
"$project": {
"_id": 0,
"value": "$Records.Properties.value"
}
}])
timestamp = dataset.find({"Records.Properties.Property.Name":'Data'},{"timestamp":1,"_id":0})
Print Data
for a in timestamp:
print a
这给了我以下结果
{u'ok': 1.0, u'waitedMS': 0L, u'result': [{u'value': u'-0,04149,-0,03866,-0,02914,-0,02319,-0,02027,-0,00234,0,00564,0,01269,0,02852,0,04648,0,05709,0,06261,0,07325,0,08223,0,08665,0,09229,0,09688,0,09754,'}, {u'value': u'0,00218,0,00257,0,00232,0,00329,0,00279,0,00348,0,00322,0,00313,0,00252,0,00311,0,00347,0,00278,0,00309,0,00304,0,00382,0,00351,0,00119,0,00277,0,00307'}]}
{u'timestamp': datetime.datetime(2016, 8, 24, 14, 59, 4)}
{u'timestamp': datetime.datetime(2016, 8, 21, 5, 59, 7)}
我长期以来一直在搞这个 - 我知道它应该很简单。我想分解数据,这样我就可以将第一个时间戳与第一组值放在一起,而第二个时间戳则放在第二个时间戳中。
此外,我试图分解这些值集,以便我可以使用它们来构建条形图与时间(0.01s por cada值),(每个' 0,xxxx'是一个数字)
非常感谢您的时间,非常感谢您的帮助。这些结果列表或字符串或其他内容?任何帮助都会很棒。
答案 0 :(得分:0)
因为pymongo的结果是某种格式,要检索数据,您需要使用数据['结果']来提取数据。
for a in Data['result'][:1]: #only print the first result in the list
#print a['value']
span = 2
datas = a['value'].split(",")
Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)]
for a in Data_list:
print a
然后,为了使数据可用于图形目的,您需要使用" float"将字符串转换为值。
T2 = map(float, Data_list)
然后简单地绘制图表
import numpy as np
import matplotlib.pyplot as plt
num = len(Data_list)
print num
x = np.arange(0,num,1)
print 'Time (s)',x
plt.plot(x, T2)
plt.show()