首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >distanceField in geoNear in geoNear-data-mongodb

distanceField in geoNear in geoNear-data-mongodb
EN

Stack Overflow用户
提问于 2014-07-02 06:16:37
回答 1查看 900关注 0票数 0

我用的是春季数据-mongodb。

  1. 我可以使用聚合触发geoNear查询吗?
  2. 我可以像在mongodb中那样在geoNear查询中指定geoNear。

下面是样例mongodb查询:

代码语言:javascript
复制
([
{
    $geoNear: {
        near: [
            28.45,
            77.34
        ],
        distanceField: "distance",
        maxDistance: 20,
        num: 5,
        query: {
            $or: [
                {
                    cuisines: {
                        '$in': [
                            'Mughlai',
                            'NorthIndian'
                        ]
                    }
                }
            ]
        }
    }
},
{
$unwind: '$ProducerTimeSlots'
}
])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-02 10:01:37

您需要扩展聚合操作功能,GeoNearOperations类没有distanceField变量。

代码语言:javascript
复制
public class GeoNearOperationExt implements AggregationOperation {

private NearQuery nearQuery;

private String distanceField = "distance";

public GeoNearOperationExt(NearQuery nearQuery) {
    this.nearQuery = nearQuery;
}

/**
 * Default is distance
 * @return
 */
public String getDistanceField() {
    return distanceField;
}

/**
 * Set distanceField value Default is distance
 * @param distanceField
 */
public void setDistanceField(String distanceField) {
    this.distanceField = distanceField;
}



@Override
public DBObject toDBObject(AggregationOperationContext context) {
    DBObject dbObject = context.getMappedObject(nearQuery.toDBObject());
    dbObject.put("distanceField", distanceField);
    return new BasicDBObject("$geoNear", dbObject);
}
}

要在聚合中使用它,只需将其包含在聚合操作数组中,即传递给聚合函数的参数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24524115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档