当前位置: 首页 > 知识库问答 >
问题:

找不到地理命令类org.springframework.data.mongodb.core.query.编解码器

邹高峻
2023-03-14

这是我的代码

Criteria c = new Criteria();
    c.andOperator(Criteria.where("country").is(country),
            Criteria.where("createTime").lte(wp),
            Criteria.where("location").withinSphere(circle),
            Criteria.where("titleContent").exists(true));

    AggregationOperation match = Aggregation.match(c);
    AggregationOperation limit = Aggregation.limit(20);
    AggregationOperation sort = Aggregation.sort(new Sort(Sort.Direction.DESC, "createTime"));
    AggregationOperation group = Aggregation.group("titleContent").sum("count").as("titleCount").count().as("contentCount");
    Aggregation aggregation = Aggregation.newAggregation(match, sort, limit, group);
    AggregationResults<TitleRes> result = template.aggregate(aggregation, "post", TitleRes.class);

当我添加Criteria.where("位置")时。

它将抛出异常

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class org.springframework.data.mongodb.core.query.GeoCommand

当我删除标准时。在哪里(“位置”)。withinSphere(圆圈)

没关系。

我不知道如何处理它。我想在球体中获取数据


共有1个答案

籍靖
2023-03-14

我使用geoNear命令解决了这个问题:https://docs.mongodb.com/manual/reference/command/geoNear/

从标准中删除位置,并使用ge近而不是匹配:

        NearQuery near = NearQuery.near(new GeoJsonPoint(request.getLongitude(), request.getLatitude()));
        near = near.maxDistance(request.getDistance() / Metrics.MILES.getMultiplier());
        near = near.num(2000000);//watch out for max num default restriction
        near = near.spherical(true);
        Query q = new Query();
        q.addCriteria(matchCriteria);
        near = near.query(q);
        AggregationOperation geoNear = Aggregation.geoNear(near, "location");
 类似资料:
  • 我有一个网络钩子齿轮为我的不和谐机器人。我想让embarss命令(在webhook cog中)触发一个webhook,创建时使用用户名和pfp,这很好。然而,我也希望这个命令能够被设置到一个特定的用户身上,这就是问题所在。当我尝试将成员参数添加到embarrass函数中时,它看起来像:async def embarrass(self、ctx、member:discord.member),但不起作用

  • 在保存composer.phar文件的目录中,我无法执行任何作曲家命令。 当我执行时,我可以看到作曲家正在运行 但是任何直接的作曲家陈述都失败了。 不确定这是否重要,但Composer包含在克隆存储库中。 我只想安装一个Oauth库,然后可能几个月内不会再接触Composer,所以我不需要在全球范围内运行它。我只是不明白为什么我不能从这个目录中运行作曲家。

  • 问题内容: 我已经使用命令在 CentOS 5.5版 机器中安装了Java 。但是我无法使用javac编译类。 我是否需要安装其他软件包? 我试图找到可执行文件,但无法找到它。 链接如下: -> -> 我已经看到了以下输出: 问题答案: 您仅安装了Java Runtime Environment(JRE),其中不包含。为此,您必须安装OpenJDK开发环境。您可以安装或,两者都包括。 顺便说一句:

  • 问题内容: 我在修复此bash脚本中的错误时遇到问题,我真的不知道我做错了什么,感谢您的任何帮助,谢谢 问题答案: 在 之前和 之后 添加一个空格。

  • 问题内容: 尝试安装Vue,但出现错误。 一切都按照Vue的说明安装,我不确定为什么会出现此问题。 提前致谢! 问题答案: 尝试使用以下命令更新PATH变量: 更新节点/ NPM可能也有帮助。