来自SpringBoot MongoRepository的GeoQuery MongoDB

我正在尝试使用@Query注释从Spring Boot MongoRepository执行复杂的GeoQuery。 以下是我的文档:

{
    "_id" : ObjectId("5e96c08322f74b00078cfff1"),"category" : "Services","businessType" : "MyCommunityStore","businessId" : "sin5e96c08322f74b00078cfff1","promoted" : true,"banner" : true,"signed" : true,"geoLocation" : [ 
        -117.1264293,32.9641416
    ]
}

我需要执行以下任务的查询:

  1. 使用升级标志“ true” 过滤所有文档。
  2. 根据距给定点[x,y]的距离对这些文档进行排序

有人可以帮我编写此查询吗?

以下查询给出错误:

{ 'promoted':true,'geoLocation' : { '$near' : [-117.1264293,32.9641416],'$maxDistance' : 30.00}})

错误日志跟踪: java.lang.IllegalArgumentException:点不能为null! 在org.springframework.util.Assert.notNull(Assert.java:198)〜[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.data.mongodb.core.query.Nearquery。(Nearquery.java:193)〜[spring-data-mongodb-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.mongodb.core.query.Nearquery.near(Nearquery.java:254)〜[spring-data-mongodb-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.mongodb.core.query.Nearquery.near(Nearquery.java:237)〜[spring-data-mongodb-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.mongodb.repository.query.MongoQueryExecution $ GeonearExecution.doExecuteQuery(MongoQueryExecution.java:157)〜[spring-data-mongodb-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.mongodb.repository.query.MongoQueryExecution $ GeonearExecution.execute(MongoQueryExecution.java:149)〜[spring-data-mongodb-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.mongodb.repository.query.AbstractMongoQuery.doExecute(AbstractMongoQuery.java:126)〜[spring-data-mongodb-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.mongodb.repository.query.AbstractMongoQuery.execute(AbstractMongoQuery.java:101)〜[spring-data-mongodb-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:618)〜[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)〜[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodinvocation.proceed(ReflectiveMethodinvocation.java:186)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)〜[spring-data-commons-2.2.6.RELEASE.jar:2.2.6.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodinvocation.proceed(ReflectiveMethodinvocation.java:186)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.aop.interceptor.ExposeinvocationInterceptor.invoke(ExposeinvocationInterceptor.java:95)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodinvocation.proceed(ReflectiveMethodinvocation.java:186)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在com.sun.proxy。$ Proxy97.searchGeoLocationNear(未知来源)〜[na:na] 在sun.reflect.NativeMethodaccessorImpl.invoke0(本机方法)〜[na:1.8.0_265] 在sun.reflect.NativeMethodaccessorImpl.invoke(NativeMethodaccessorImpl.java:62)〜[na:1.8.0_265] 在sun.reflect.DelegatingMethodaccessorImpl.invoke(DelegatingMethodaccessorImpl.java:43)〜[na:1.8.0_265] 在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_265] 在org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodinvocation.invokeJoinpoint(ReflectiveMethodinvocation.java:198)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodinvocation.proceed(ReflectiveMethodinvocation.java:163)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)〜[spring-tx-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodinvocation.proceed(ReflectiveMethodinvocation.java:186)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)〜[spring-aop-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在com.sun.proxy。$ Proxy97.searchGeoLocationNear(未知来源)〜[na:na] 在com.linkscreens.mycommunity.service.BusinessServiceImpl.getBannerDocuments(BusinessServiceImpl.java:261)〜[classes /:na] 在com.linkscreens.mycommunity.controller.BusinessController.getBannerDocuments(BusinessController.java:77)〜[classes /:na] 在sun.reflect.NativeMethodaccessorImpl.invoke0(本机方法)〜[na:1.8.0_265] 在sun.reflect.NativeMethodaccessorImpl.invoke(NativeMethodaccessorImpl.java:62)〜[na:1.8.0_265] 在sun.reflect.DelegatingMethodaccessorImpl.invoke(DelegatingMethodaccessorImpl.java:43)〜[na:1.8.0_265] 在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_265] 在org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在javax.servlet.http.HttpServlet.service(HttpServlet.java:634)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)〜[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在javax.servlet.http.HttpServlet.service(HttpServlet.java:741)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)〜[tomcat-embed-websocket-9.0.33.jar:9.0.33] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)〜[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE] 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)〜[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)上[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)上[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:868)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1594)[tomcat-embed-core-9.0.33.jar:9.0.33] 在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)上[tomcat-embed-core-9.0.33.jar:9.0.33] 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[na:1.8.0_265] 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)[na:1.8.0_265] 在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)[tomcat-embed-core-9.0.33.jar:9.0.33] 在java.lang.Thread.run(Thread.java:748)[na:1.8.0_265]

tszgcs 回答:来自SpringBoot MongoRepository的GeoQuery MongoDB

我的存储库方法的返回类型为GeoResults,它没有Point类型的方法参数。 将返回类型更改为列表有效。

本文链接:https://www.f2er.com/1432165.html

大家都在问