Spring整合MongoDB查询报错

配置文件:


<!-- mongodb -->

<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">

    <property name="host" value="${mongo.host}" />

    <property name="port" value="${mongo.port}" />

</bean>

<!--<mongo:mongo host="${mongo.host}" port="${mongo.port}"></mongo:mongo>-->

<mongo:db-factory mongo-ref="mongo" dbname="${mongo.databaseName}" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">

    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />

</bean>

<mongo:repositories base-package="com.example

.repository.geo" />


代码:

  • 根据经纬度查找附近的地理位置


  • @param lat

  • 经度,如39.912232

  • @param lng

  • 维度 116.412323232

  • @param maxDistance

  • 距离目标点的最大距离 ,单位为角度, 建议 0.5~1.5,一个单位长度误差范围为111km

  • @param maxCount

  • 结果数目,建议 1~3

  • @return maxDistance范围内的位置,由近到远排序
    */

List<GeoLocation> serarchNear(double lat, double lng, double maxDistance, int maxCount) {


   try {

       Point point = new Point(lng, lat);

       Query query = new Query(Criteria.where("loc").near(point).maxDistance(maxDistance));

       query.limit(maxCount);


       List<GeoLocation> find = template.find(query, GeoLocation.class);


       return find;

   } catch (Exception e) {

       return null;

   }

}


异常信息:

java.lang.ClassNotFoundException: com.mongodb.MongoException$DuplicateKey

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)

at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:51)

at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1913)

at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1796)

at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1607)

at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1591)


隔江千里
浏览 468回答 1
1回答

慕姐4208626

mongodb的driver驱动包冲突,注意版本号,鉴定完毕。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java