当我在列表中有多个纪元时间时,如何从python中获取MongoDB中的数据?

问题描述 投票:-1回答:1

我在python的列表中有一个纪元时间。如何从列表中的所有时间获取mongodb中的数据?我试图循环查询所有时间值,但我想这会减慢执行速度。

time_list = [1553595310878, 1553595190830, 1553594831594, 1553594471976, 
                 1553593151893, 1553593030752,1553592432641,1553591952041, 
                 1553591893229, 1553591412779, 1553589791651]
client = MongoClient(host='ip', port=no,   username='*****', 
password='*****', authSource='****')
db=client.admin

list1 = [] 
list2 = []
list3 = []

for x in time_list:
     data=db.collectionname.find({"projectId":"122333333444","page.time":{'$eq':x}})
     for y in data:
         list1_end.append(pd.DataFrame(y['page'], index = [0])['pageLoad'].values.tolist())
         list2_end.append(pd.DataFrame(y['page'], index = [0])['dom'].values.tolist())
         list3_end.append(pd.DataFrame(y['page'], index = [0])['network'].values.tolist())

print(list1)
print(len(list1))
print(list2)
print(list3)

输出如下:

[[6278], [9032], [6358], [5066], [6886], [4449], [5597], [8332], [4634], [5902], [5803]]
11
[[3344], [2630], [3281], [2272], [3969], [2001], [3171], [5702], [2266], [2915], [2761]]
[[1165], [1399], [1259], [1278], [1245], [969], [1149], [1262], [818], [1684], [1262]]

任何输出都没问题。

python mongodb time-series
1个回答
0
投票

看来你正在寻找的是MongoDB $in operator。虽然它不能保证提高速度,但唯一的方法就是测试。

在你的情况下,它看起来像这样:

data=db.collectionname.find({"projectId":"122333333444","page.time":{'$in': time_list}})
© www.soinside.com 2019 - 2024. All rights reserved.