官方文档: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的时间戳

MongoDB 认识ObjectId相关推荐

  1. MongoDB SpringBoot ObjectId序列化json为String

    mongodb的ObjectId默认序列化为bean对象,如果需要转换为json字符对象,配置如下 @Configuration public class JacksonConfig implemen ...

  2. python中Mongodb的Objectid 实现

    python中Mongodb的Objectid 实现 Mongodb 作为非关系型数据库,默认实现 了Objectid 作为索引,对数据进行排序. ojbectid 组成 在 ObjectId 类中, ...

  3. mongoDB之ObjectId

    mongoDB之ObjectId 一.ObjectId介绍     我们在使用mongodb插入数据时,每个document中必须有一个_id字段,且可以是任意类型,但如果没有单独设置_id字段,mo ...

  4. php生成objectid,python根据时间生成mongodb的ObjectId的方法

    本文实例讲述了python根据时间生成mongodb的ObjectId的方法.分享给大家供大家参考.具体分析如下: mongodb的_id为ObjectId类型,ObjectId内是包含时间戳信息的, ...

  5. 【知识小课堂】 mongodb 之 objectId

    一.OBJECTID 因公司开发人员在使用MONGODB时,总遇到一些小问题.为了增加大家的mongodb 数据库知识. 决定每周进行一.两次的知识小课堂.这里把内容整理出来,上传到博客中.也算是自己 ...

  6. MongoDB的ObjectId生成原理

    在分布式系统中,分布式 ID 有很多特殊的要求,其中两个要求 各个 ID 必须全局唯一,且 ID 能够趋势递增. mongo插入一条记录 db.xttblog.insert({"name&q ...

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

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

  8. python处理mongodb的ObjectId

    主要思路是是ObjectId和str互转 MongDB->Python[ObjectId 2 Str] from bson.objectid import ObjectId a=ObjectId ...

  9. MongoDB中的_id和ObjectId

    _id和ObjectId MongoDB中存储的文档必须有一个"_id"键.这个键的值可以是任何类型的,默认是个ObjectId对象. 在一个集合里面,每个集合都有唯一的" ...

最新文章

  1. Day 1 AR认知课 || AIRX三次方
  2. 鱼佬:从数据竞赛到工作!
  3. 刚出道的黑客搞瘫美国!他们一边搞钱一边捐款给慈善组织,还说俄国人不打俄国人...
  4. [YTU]_1055 (输入字符串以及输出)
  5. Python正则表达式-2
  6. MyEclipse 9.0 正式版公布新闻 下载
  7. 区块链BaaS云服务(16)天德链TDBC“智能合约”
  8. Intel Realsense D435 多摄像头配置 Multi-camera configurations (220)(官方测试的摄像头配置表【不同带宽下分辨率、帧率等】)
  9. arduino 勘智k210_如何评价嘉楠耘智的勘智K210芯片?
  10. swiper怎么在HTML引入JS文件,Swiper.js插件超简单实现轮播图
  11. mysql启动错误1.69,MySQL无法启动例一
  12. 抢占乡镇渠道 中国手机厂商比苹果有经验
  13. C#LeetCode刷题之#434-字符串中的单词数​​​​​​​(Number of Segments in a String)
  14. MICCAI 2019 :纪录、风向与学术思考
  15. Squid安装及运行控制_wuli大世界_新浪博客
  16. 国产计算机系统有哪些,国产电脑操作系统有哪些(华为鸿蒙系统笔记本电脑)...
  17. 如何确定一台电脑配置的高低
  18. 使用Jasypt对SpringBoot配置文件加密(数据源为SpringBoot默认的数据源HikariDataSource)
  19. 关于4次挥手时等待2MSL的问题
  20. 网络摄像机-ISP基础一

热门文章

  1. 没有version.sh,如何查看tomcat版本
  2. 读取EXCEL内容空格或连字符变成问号
  3. 利用EVEREST Corporate Edition网络统计硬件配置信息
  4. 体验 服务器正在维护升级中 给大,关于未收录SSR降临! 限时活动的相关说明
  5. 司法考试的心得与经验
  6. Blender:Lowpoly头部建模流程 第三部分(附blender源文件下载)
  7. 乡村振兴战略下传统村落文化旅游设计 | 年度书香,我们的村落,我们的文化,我们的旅游
  8. HTML5--地理定位与第三方工具百度地图的应用
  9. C++ 蓝桥杯之 字母图形
  10. 数学建模学习1.20——b站公开视频与微信公众号推文