使用mongodb地理位置索引查询,延时索引

下面使用的mongdb图形化界面工具Robo 3T 1.3.1

在这里插入图片描述
在这里插入图片描述

数据库需要有对应的地理位置索引字段

查看索引

在这里插入图片描述

loc字段为一个长度为2的数组,代表当前数据的地理位置X, Y 坐标

索引类型: 2dsphere (地理位置索引)
在这里插入图片描述

应用场景推荐: 根据用户坐标查找附近店铺或商家

在Java中通过给定的位置坐标,查询出数据库20公里范围内的数据

 					Aggregation aggregation = Aggregation.newAggregation(
                        Aggregation.geoNear(
                                NearQuery.near(new Point(longitude, latitude))  //坐标数据
                                        .maxDistance(20, Metrics.KILOMETERS)  //查找范围(半径),单位公里
                                        .inKilometers()
                                        .spherical(true), "distance"),

                        Aggregation.match(Criteria.where("status").is(1)),
                        Aggregation.match(Criteria.where("category_id").is(categoryId)),
                        Aggregation.match(Criteria.where("name").regex(".*?" + name + ".*", "i")),  //模糊查询,匹配正则表达式
                        Aggregation.skip(Long.valueOf((page - 1) * rows)),
                        Aggregation.limit(rows)
						 /**
			             * @param aggregation       :封装的查询条件
			             * @param "db_gpo_sales"    :索要查询的目标数据空
			             * @param DbGpoSales.class  :封装查询结果的实体类
			             * @return                  :所有范围内的数据
			             */
                        AggregationResults<DbGpoSales> results = mongoTemplate.aggregate(aggregation, "db_gpo_sales", DbGpoSales.class);

数据库添加延时索引创建

经过测验,mongo中的延时索引只能精确到分钟,无法精确到秒,会在每分钟固定的某个时刻,检查表内的数据,清除掉已经超时的数据,而不是数据超时后立马被清理掉

执行创建延时索引命令,设置超时时间(单位:秒)

db.getCollection('task').createIndex( { "create_time": 1 }, { expireAfterSeconds: 1800})

在这里插入图片描述

应用场景推荐: 用户下单,超过半小时未支付,自动取消订单

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值