mongoDb查询数据库,将某字符串按照要求字符串切割成数组返回

最近项目中有个需求需要将存进mongoDBd的经纬度转换成数组取出,字符串数据格式为****,N,****,E,首先使用robo 3T写出命令,得出结果,然后再转换位java语言

命令如下:

db.getCollection('*******').aggregate([
{
    $match:{
        "position":{"$ne":null,$exists:true}
    }
},
{     
  $group:{
      _id : "$_id",
      position:{$first:"$position"}
  }
},
{
     $addFields: {
       'coord': {
           $split: ['$position', ',']
       }
      }
}
])

查询截图:

转换为Java语言:

Criteria criteria = new Criteria();
criteria .andOperator(Criteria.where("position").exists(true),Criteria.where("position").ne(null));
Aggregation aggregation = Aggregation.newAggregation(
        Aggregation.match(criteria),
        Aggregation.group("id")
                .first("position").as("position"),
        new AggregationOperation(){
            @Override
            public Document toDocument(AggregationOperationContext aoc) {
                List<String> split = new ArrayList() {{
                    add("$position");
                    add(".");
                }};
                return new Document("$addFields",new Document("coord",new Document("$split",split)));
            }
        }
);
List<HistoricalTrackBean> list = mongoTemplate.aggregate(aggregation, ****.class,
        HistoricalTrackBean.class).getMappedResults();
return list;

HistoricalTrackBean类属性如下:

接口返回结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值