当我使用命令行通过Robo 3T,mongod或pymongo运行查询时,查询需要50毫秒才能返回结果。在AWS Lambda中使用pymongo运行相同的查询需要15到16秒。所有查询都不是那么慢,在我的情况下只是地址查询(名称查询不到1秒)。我正在使用python 3.6,pymongo 3.7和mongodb 3.6。
我不认为这是一个冷门问题,因为我连续运行2个查询,这是第二个查询,而第一个查询仍然不到一秒钟。另外,我尝试了连续运行多次,每次都得到相同的结果。该功能仅占用分配的128MB中的57MB,因此我不认为这可能是CPU问题,并且增加CPU根本没有改变速度。
MongoDB查询
db.getCollection('CA').find({'$and': [{'OWNER_ZIP': {'$regex': '^95120'}},{'OWNER_STREET_1': '123 MAIN STREET'}]})
pymongo查询
cursor = list(db_unclaimed.find({'$and': [{'OWNER_ZIP': {'$regex': '^95120'}},{'OWNER_STREET_1': '123 MAIN STREET'}]}).skip(0).limit(50))
我正在使用的Python函数
def searchAddress(zipcode, address, page_size, page_num):
print('Searching by address...')
print(address)
skips = page_size * (int(page_num) - 1)
cursor = list(db_unclaimed.find({'$and': [{'OWNER_ZIP': {'$regex': zipcode}},{'OWNER_STREET_1': address}]}).skip(skips).limit(page_size))
for document in cursor: print(document)
return cursor
我希望查询在lambda中花费的时间与使用其他3种方法所花费的时间几乎相同,即使它可能会慢一些。是否有人对导致这种情况的原因有任何想法?