我需要向API提取大约25000,000个请求以获取数据,并且这些请求的关键字存储在MongoDb中。
目前我这样做(pseduo代码):
C:\> batch.bat username:password@hostip
Username: "username"
Password: "password"
HostIP: "hostip"
C:\> batch.bat root:pass@q@10.120.36.65
Username: "root"
Password: "pass@q"
HostIP: "10.120.36.65"
...但是由于请求数以千计,我必须每天都这样做,所以我想知道是否有更好,更有效的方法来做到这一点?
是否会更快如果我将关键字存储在一个数组中,以便对数据库进行单个查询,然后使用它来发出API请求?
答案 0 :(得分:1)
不确定这是否会有所帮助,但我建议对所有文档使用distinct。如果你有查询明确不会工作。
//this will filter all results and return only distinct keywords
$docs = $collection->distinct('keyword');
https://docs.mongodb.com/manual/reference/method/db.collection.distinct/
对于find,尝试返回较少量的数据。仅使用投影的关键字 https://docs.mongodb.com/manual/reference/method/db.collection.find/#find-projection
对于api请求,如果您可以发送一堆关键字,然后保存结果也会提高性能。
离场保存数据仍然是同一时间。
希望这有帮助。