是对超过百万条记录的集合进行聚合操作。DBObjectmatch=(DBObject)JSON.parse("{$match:{logType:{'$in':[5,9]}}}");DBObjectgroup=(DBObject)JSON.parse("{$group:{'_id':'$domainUrl','count':{'$sum':1}}}");AggregationOutputoutput=logCollection.aggregate(匹配,组);偶尔会出现读取超时异常。com.mongodb.MongoException$Network:Readoperationtoserver/192.168.10.202:27017failedondatabaseadLogTableatcom.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:253)atcom.mongodb.DB.command(DB.java:261)atcom.mongodb.DB.command(DB.java:243)...Causedby:java.net.SocketTimeoutException:Readtimedoutatjava.net.SocketInputStream.socketRead0(NativeMethod)atjava.net.SocketInputStream.read(SocketInputStream.java:152)通过多次测试,发现一个进行聚合平均时间为5s,超过5s会报错!然后查看MongoDB的配置信息:socket-timeout="5000"//5socket-timeout默认配置为0,即没有限制。没有超时限制,如果系统有问题也不容易发现。应根据实际情况给出合理的超时时间。通过多次测试,发现最长的执行时间是6秒,所以超时时间设置为10000。socket-timeout="10000"//10s注意:当MongoDB与Spring集成时,如果要配置多个MongDB源,只会启用最后一个
