MongoDB 认识ObjectId

article/2025/10/3 9:42:12

官方文档:https://docs.mongodb.com/manual/reference/method/ObjectId/

现在我们有一个集合如下

db.class0.insertMany([{"name": "一年级一班","headmaster": "王老师"},{"name": "一年级二班","headmaster": "刘老师"},{"name": "一年级三班","headmaster": "李老师"}
]);

请添加图片描述

现在要根据id查询记录,觉得是不是很简单

db.class0.find({"_id": "61f366f11f0300003b001b54"
})

执行查询发现结果为空,怎么回事?在客户端看一下全部数据
请添加图片描述
发现_id是ObjectId(“XXXXXXXXXXXXX”),重新试一下

db.class0.find({"_id": ObjectId("61f366f11f0300003b001b54")
})
// 结果可以按预期查到
{ "_id" : ObjectId("61f366f11f0300003b001b54"), "name" : "一年级一班", "headmaster" : "王老师" }

ObjectId是个什么玩意?

# 介绍
ObjectId 一个js对象 
ObjectId()可以生成一个24位的16进制唯一标识
12个字节 = 4个字节的时间戳 + 3个字节的机器码的散列值 + 2个字节的进程ID + 3个字节的自增数# 优势
时间戳确保不同秒生成不同的ObjectId
机器码的散列值确保了不同主机生成不同的ObjectId,确保主键在分布式中不造成冲突
进程id确保同一台机器下不同mongodb进程产生不同的ObjectId
自增数确保在同一秒内产生不同的ObjectId
总结:ObjectId解决了在分布式环境下高并发情况主键唯一性问题# 相关方法
ObjectId() 生成一个新的ObjectId
ObjectId("十六进制字符串")  将一个十六进制字符串转换成ObjectIdvar x = ObjectId();
x.toString(); ObjectId转十六进制字符串
x.getTimestamp(); 获取ObjectId的时间戳

http://chatgpt.dhexx.cn/article/6WfqiBEf.shtml

相关文章

mysql objectid_【Mongodb】_id和ObjectId详解!

2.6.6 _id和ObjectId MongoDB 中存储的文档必须有一个"_id" 键。这个键的值可以是任何类型的,默认是个ObjectId 对象。在一个集合里面,每个文档都有唯一的"_id" 值,来确保集合里面每个文档都能被唯一标识。如果有两个集合…

Mongodb ObjectId格式

ObjectId是一个24位的字符串,实际是由一组十六进制的字符构成,共12个字节。(1个字节8位能表示2个十六进制数,12个字节能表示24个十六进制数)。 ObjectId 是一个12字节 BSON 类型数据,有以下格式&#xff1a…

java objectid_关于MongoDB ObjectId

ObjectId的构成 ObjectId的值由12个字节组成,其中, 4个字节表示时间戳(自Unix纪元以来的秒数),记录创建时间; 3个字节表示机器标识符,保证不同主机产生不同的ObjectId值; 2个字节表示进程ID,保证…

从根上理解MongoDB的ObjectId生成原理!

想写这篇文章好久了,一直抽不出时间。这两天端午节放假,我和娃都泡在图书馆,在他看书的空闲期,我拿出电脑写下了本文。 我们都知道,在分布式系统中,分布式 ID 有很多特殊的要求,其中之二就是要求…

ArcGIS中的OBJECTID、FID 和 OID 的区别!不要傻傻分不清

喜欢就关注我们吧 时常有很多我朋友分不清OBJECTID、FID 和 OID有什么区别,不懂得怎么应用和管理,今天我们来说个明白。 ArcGIS Desktop 产品要求独立表和属性表均具有 ObjectID字段,该字段包含唯一的长整型用于标识每个记录。 此 ID 由 Esri…

Mongo中id介绍

好记忆不如按烂笔头 ,即便是最简单的,时间长了也难免会忘记,记下可以让你更明白。 2.6.6 _id和ObjectId MongoDB 中存储的文档必须有一个"_id" 键。这个键的值可以是任何类型的,默认是个ObjectId 对象。在一个集合里面…

canal

简介 canal [kənl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增…

阿里的数据同步神器——Canal

前言 同步数据的神器: Canal安装配置 canal [kə’nl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署, 存在跨机房同步的业务需求, 实现方式主要是基于业务 trigger 获取增量变更。从 2…

使用Canal组件订阅MySQL binlog数据增量

一、简介 Canal是一款强大的开源组件,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 1. canal 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQ…

mysql进阶:canal搭建主从|集群架构

0.引言 之前我们讲解过canal的各种应用,但是对于生产环境来讲,服务高可用是必须保证的。因此canal单节点是不能满足我们的需求的。就需要搭建canal集群。 1. canal集群模式 从架构方式上出发,我们用来保证服务高可用的手段主要是主从架构、…

ElasticSearch 7.15.2 使用java canal 接入实现灵活化增量数据准实时同步

前言: ①canal.adapter-1.1.5 支持一对一单表的增量数据同步ElasticSearch 7; ②对于多表聚合场景的SQL满足不了我们的业务需求。 ③采用java canal 接入,可以实现灵活化增量数据准实时同步 文章目录 一、java canal 接入1. 依赖导入2. 增加配…

浅入浅出keepalived+mysql实现高可用双机热备

当数据库发生宕机的情况,如果配置了数据库主从同步模式或主主同步模式,则可以从从库中获取数据。 当数据库发生宕机的情况,要求应用系统实现高可用,应用系统不会受到影响,需要对mysql进行双机热备实现数据库的高可用。 实现双机热备的方式有Mycat组件方式、canel组件方式、…

【硬刚大数据】大数据同步工具之FlinkCDC/Canal/Debezium对比

欢迎关注博客主页:微信搜:import_bigdata,大数据领域硬核原创作者_王知无(import_bigdata)_CSDN博客 欢迎点赞、收藏、留言 ,欢迎留言交流!本文由【王知无】原创,首发于 CSDN博客!本文首发CSDN论…

4、Canal的 instance模块

一、总体结构 如确所述,Canal server的模式有两种:manager和spring 在core模块中,定义了CanalInstance接口,以及其抽象类子类AbstractCanalInstance。 在spring模块,提供了基于spring配置方式的CanalInstanceWithSpr…

canal实现mysql数据同步

前言 canal是实现mysql数据备份,异地灾备,异地数据同步等重要的中间件,在实际的业务场景中有着广泛的使用,本文基于小编所在项目中一个异地数据同步的场景为例,通过案例演示下利用canal实现mysql数据同步的过程 同步原理 如上图所示,为canal同步mysql数据的原理的简单示…

SpringBoot系列之canal和kafka实现异步实时更新

SpringBoot系列之canal和kafka实现异步实时更新 实验开发环境 JDK 1.8SpringBoot2.2.1Maven 3.2+开发工具 IntelliJ IDEAsmartGit1、什么是阿里canal? canal是阿里开源的, 对数据库增量日志解析,提供增量数据订阅和消费的组件。引用官网的图片,canal的工作原理主要是模拟…

Java:SpringBoot整合Canal+RabbitMQ组合实现MySQL数据监听

canal [kə’nl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 目录 一、MySQL设置二、启动Canal服务端三、通过Canal客户端消费数据四、通过RabbitMQ消费数据1、启动RabbitMQ2、修改canal配置3、消…

Kubernetes 学习19基于canel的网络策略

一、概述 1、我们说过,k8s的可用插件有很多,除了flannel之外,还有一个流行的叫做calico的组件,不过calico在很多项目中都会有这个名字被应用,所以他们把自己称为project calico,但是很多时候我们在kubernet…

基于canel的网络策略

基于canel的网络策略 canel工作的默认网段是192.168.0.0/16的网段 官网:https://docs.projectcalico.org/v3.2/introduction/ 参考地址: https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/flannel 分别运行:…

REDIS11_缓存和数据库一致性如何保证、解决方案、提供Canel解决数据一致性问题

文章目录 ①. 缓存和数据库双写一致保证②. 缓存数据一致性-解决方案③. 缓存数据一致性-解决-Canal ①. 缓存和数据库双写一致保证 ①. 只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题 ②. 那么,如何解决一致性问题?提…