【问题标题】:Spring data mongoDB GeoNear query with excluding fields具有排除字段的 Spring 数据 mongoDB GeoNear 查询
【发布时间】:2012-09-22 18:06:32
【问题描述】:

我不知道是我做错了什么还是一个错误。 我有以下代码:

    Query criteria = new Query(Criteria.where("locationTime").gte(
            "date-time"));
    criteria.fields().exclude("friends");

    NearQuery query = NearQuery.near(point).maxDistance(maxDistance)
            .num(limit).query(criteria);
    GeoResults<Profile> result = mongoTemplate
            .geoNear(query, Profile.class);

我正在执行查询并根据距离和“locationTime”标准正确检索附近的个人资料,但它似乎忽略了排除的字段并与他们的朋友一起检索个人资料。

当我使用简单查询时,排除/包含字段可以完美运行。
我到处找,找不到任何类似的用例,如果我做错了什么,请告诉我。

谢谢。

【问题讨论】:

    标签: mongodb geolocation spring-data


    【解决方案1】:

    据我所知,无法使用geoNear 命令限制字段。

    我考虑调用 executeCommand 以尝试解决 Spring Data 的限制,但看起来他们甚至没有办法通过原始命令来解决。

    【讨论】:

    • 我有很多数据要在 GeoNear 查询中排除。你是在告诉我它必须检索完整的文档吗?有什么解决办法吗?那样它会非常缓慢..
    • 您可以尝试在常规查找语法中使用$nearmongodb.org/display/DOCS/… 它不能做 geoNear 能做的所有事情,但如果你可以将你的查询放入其中,你可以限制字段,就像你通常使用 find 一样。
    • 谢谢你......你基本上是说在mongo geo中不支持排除字段的查询吗?还是弹簧数据问题?
    • 这是一个 mongo 问题,而不是 Spring 数据问题。另见stackoverflow.com/questions/9782080/…。我找不到功能请求的票——也许人们不使用 geoNear 处理大文档。似乎是一个有效的功能。
    • 您知道我是否可以通过 mongoTemplate (Spring-data) 执行近距离查询吗?似乎 API 仅提供 geoNear 方法..
    猜你喜欢
    • 2015-01-10
    • 2013-12-03
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多