从mong 主键ObjectId获取插入时间

本文介绍如何通过MongoDB的自动生成主键ObjectId解析获取文档的createTime,提供了一种在插入缺少时间信息时利用ObjectId提取时间的方法,适合开发人员快速查阅。

有时候插入mongo的文档,没有记录createTime信息,此时可以通过解析mongo主键ObjecetId获取当前时间,前提是主键是mongo自动生成的

ObjectId 实际上它是由一组十六进制的字符构成,每个字节两位的十六进制数字,总共用了12字节的存储空间,由以下部分组成:

4个字节时间戳(24位中的前8位16进制的数字)。

5个字节的随机数(3字节机器码+2字节进程id)。

3个字节的基于随机数的计数器。

以ObjectId:‘62318b11a89e5b0043d165c0’为例:

1.打开浏览器

2.F12调出调试 Console

3.输入如下字符串

new Date(Number(parseInt('62318b11a89e5b0043d165c0'.substr(0, 8), 16).toString() + '000'))

即可获得时间信息
在这里插入图片描述

<think>好的,我现在需要处理用户关于探花交友项目中使用MongoDB的问题。首先,用户的问题提到了MongoDB在交友应用中的具体应用,比如推荐好友列表、发布和查询动态,以及圈子功能。根据用户提供的引用内容,我需要结合这些信息来组织答案。 首先,我得回顾一下用户提供的四个引用内容。引用1提到了MongoTemplate的使用,以及推荐好友列表和动态处理。引用2讨论了集合的逻辑分类和发布/订阅方案。引用3介绍了MongoDB的基础知识,强调其非关系型特性及BSON格式。引用4则提到Spring Boot连接MongoDB的问题。用户的问题主要集中在探花交友项目中MongoDB的应用场景和具体实现。 接下来,我需要确定如何将这些信息结构化。用户示例中的回答结构包括应用场景、功能实现、技术优势以及问题排查。我需要确保每个部分都涵盖用户提供的引用内容,并正确引用对应的来源。 在应用场景部分,可以提到动态管理和圈子功能,引用1和引用3中的内容。功能实现部分需要说明动态存储的结构,使用MongoTemplate操作数据(引用1),以及推荐算法可能涉及的聚合查询(引用2)。技术优势方面,MongoDB的非关系型结构(引用3)和高效查询能力(引用2)是关键点。问题排查部分需要提到连接问题(引用4),但用户可能更关注应用而非配置,所以可以简要说明。 然后,生成相关问题时要确保问题与MongoDB在交友应用中的使用相关,比如数据模型设计、性能优化、对比关系型数据库等,同时参考提供的引用内容中的关键词,如推荐算法、集群部署、发布订阅模式。 需要检查是否所有引用都被正确使用,并且回答符合用户要求的格式:行内公式用$...$,独立公式用$$...$$,但当前问题不涉及数学公式,所以可能不需要。但需要确保LaTeX语法正确,不过这里可能用不上。使用中文回答,结构清晰,分点说明。 最后,确保问题部分提出的问题与内容相关,能够引导进一步讨论,比如关于数据分片、事务处理、数据一致性等,这些都是MongoDB在社交应用中常见的挑战。</think>### 探花交友中的MongoDB应用 在探花交友项目中,MongoDB主要用于处理动态数据、社交关系及圈子功能,具体应用如下: --- #### 1. **核心应用场景** - **动态发布与查询** 用户发布的动态(如文字、图片、地理位置)以BSON格式存储,利用MongoDB的灵活数据结构支持复杂内容[^3]。例如动态文档可能包含字段: ```json { "userId": "123", "content": "今日探花打卡!", "tags": ["交友", "旅行"], "location": { "type": "Point", "coordinates": [116.4, 39.9] } } ``` 通过`mongoTemplate`实现动态的插入与查询[^1]。 - **圈子功能** 通过集合(Collection)分类存储不同圈子(如“摄影爱好者”“游戏组队”),提升查询效率[^2]。例如: ```java @Autowired private MongoTemplate mongoTemplate; // 存储到"photography_circle"集合 mongoTemplate.insert(dynamic, "photography_circle"); ``` - **推荐好友列表** 基于用户行为数据(如共同标签、地理位置),利用MongoDB的聚合管道(`$geoNear`、`$match`)实现邻近用户推荐。 --- #### 2. **技术优势** - **高性能读写** MongoDB的副本集与分片集群支持高并发场景(如动态点赞、评论)[^2]。 - **地理空间索引** 通过`2dsphere`索引快速实现“附近的人”功能: ```java Query query = new Query(Criteria.where("location") .nearSphere(new GeoJsonPoint(116.4, 39.9)) .maxDistance(5000)); // 5公里范围内 ``` - **水平扩展能力** 动态数据量增长时,可通过分片(Sharding)分散存储压力[^2]。 --- #### 3. **问题排查** - **连接配置异常** Spring Boot需正确配置`application.yml`中的MongoDB地址,避免本地连接失败[^4]: ```yaml spring: data: mongodb: uri: mongodb://user:password@cluster0.example.com:27017/dbname ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值