首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MongoDB 自增 id 的生成

MongoDB 中 _id 的生成 mongodb 采用了一个称之为 ObjectId 的类型来做主键,ObjectId 是一个12字节的 BSON 类型字符串,如下图所示。...MongoDB 的哲学 这样设计的主键 ID 从根本上保证了其唯一性,也因此可以不必由 MongoDB 服务器生成,通常,主键 _id 的生成都是由客户端的驱动程序完成的。...MongoDB 允许我们自己生成 _id,但是这样唯一性的压力就又来了,在并发环境下保证自增 ID 的严格自增与避免 ID 冲突有时是需要丰富的经验的。 5....自己生成自增 id — findAndModify 虽然已经有很多生成自增 id 的方案可供选用,如依赖 redis 等,但 MongoDB 本身提供了原子操作,我们可以通过 MongoDB 提供的原子操作来实现...通过 php 生成 MongoDB 自增 id <?

7.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MongoDB-_id字段的含义介绍

    MongoDB中的主键无需明确指定,每一条记录被添加到集合之后, MongoDB都会自动添加主键,MongoDB中文档主键的名称叫做 _id,是一个ObjectId类型的数据,格式如下: study...> db.user.find() [ { _id: ObjectId("62c44b4d5604b99daa91103e"), name: '小博' } ] 数一下_id这个字段的长度,我们发现一共有24...位,我们将_id字段的内容拆分成4部分去分别看其对应的含义: 62c44b4d 5604b9 9daa 91103e 1-8位字符:插入数据的时候对应的时间戳 9-14位字符:代表主机的唯一标识符...db.getCollection("user").insert({ "name": "李四", "age": 29, "height": 178 }) 查看数据库里面的数据: 以_id...,但是,用户也可以自定义这个id的值: db.getCollection("user").insert({ "_id":"1", "name": "大刀王五", "age": 29

    99220

    MongoDB主键:使用ObjectId () 设置_id字段

    MongoDB中的主键是什么? 在MongoDB中,_id字段是集合的主键,以便可以在集合中唯一地标识每个文档。_id字段包含唯一的Object ID 值。...默认情况下,在集合中插入文档时,如果您没有在字段名称中添加带有_id的字段名称,则MongoDB将自动添加一个Object id字段,下图所示: ?...如果要确保在创建集合时MongoDB不会创建_id字段,并且要指定自己的ID作为集合的_id,则需要在创建集合时明确定义它。 在显式创建id字段时,需要使用名称中的_id创建它。...db.Employee.insert({_ id:10,“ EmployeeName”:“ Smith”}) 代码说明: 1....结果显示表明,我们在创建集合时定义的_id字段现在作为集合的主键。 译者:徐杨 MongoDB中文社区翻译志愿者,资深程序员。

    5.2K20

    MongoDB 实现自增 ID 的最佳实践

    前言熟悉 MongoDB 的用户应该都知道,它并不像一些关系型数据库那样提供内置的自增 ID 功能,而是默认使用 ObjectId 作为主键的类型。...但有时使用自增 ID 可能更符合某些应用场景的需求,例如:兼容现有系统某些系统需要将数据迁移到 MongoDB 时,如果原来使用的是自增 ID 作为主键,在迁移过去之后需要保持自增主键的特点。...这在需要手动输入或与用户交流时特别有用,因为自增 ID 比 ObjectId 更短、更易读。虽然 MongoDB 不支持自增 ID 的功能,但我们仍然可以使用其他方式来实现此功能。...本文将会介绍如何在 MongoDB 中实现自增 ID 序号。准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。...小结本文详细探讨了在 MongoDB 中实现自增 ID 序号的方法。

    29641

    spring-data-mongodb之自增ID实现

    来源:猿天地 链接:http://cxytiandi.com/blog/detail/1897 用了mongodb之后要是问我mongo和mysql的区别在哪里?...第一点我就会想到的是没有自增ID,mongo里面是ObjectId。今天我们就自己来实现自增的ID。 像mysql这种数据库是内部实现了自增ID,今天我们要自己实现一个,不知道大家有没有具体的思路。...当然mongodb官网上也提供了一种实现的方法,就是自定义一个获取自增ID的方法,然后每次插入的时候就去获取下一个ID,再插入到集合中。...我们既然用了spring-data-mongodb这个框架,就要基于这个框架来实现一套逻辑,而且每次插入都要自己去手动的调用方法获取一次ID,是不是太繁琐了。...首先我们定义一个用于存储每个集合的ID记录,记录每个集合的自增ID到了多少。

    2.6K120

    Node.js中的MongoDB

    MongoDB简介 MongoDB是为快速开发互联网Web应用而设计的数据库系统。 MongoDB的设计目标是极简、灵活,经常在Web应用栈的业务层被运用。...MongoDB的数据模型是面向文档的,类似于JSON的结构,MongoDB这个数据库中存的是各种各样的BSON # MongoDB安装教程 (ps:安装好之后配置环境变量,启动MongoDB服务)...","jQuery", "abc"] , core:["三大框架","node.js"]} //MongoDB的文档的属性值也可以是一个文档,当一个文档的属性值是一个文档时,我们称这个文档叫做 内嵌文档..."node.js"]}}}); db.colleges.find(); //11.查询有核心课程为 三大框架 的文档 //MongoDB支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过.../32.索引:在部分需求中, 有时候我们只需要一个文档中的部分数据, 这时候就得通过映射在查询时, 可以在第二个参数来设置查询的结果投影 db.section.find({}, {name: 1, _id

    5.3K40

    mongodb执行js脚本(一)---shell执行

    mongodb执行js脚本(一)---shell执行 2015年06月09日 10:58:36 张小凡vip 阅读数 21310更多 所属专栏: mongodb基础与运用 版权声明:本文为博主原创文章...https://blog.csdn.net/q383965374/article/details/46414115 作为一个数据库,MongoDB有一个很大的优势—它使用js管理数据库,所以也能够使用...js脚本进行复杂的管理 mongodb 的shell是javascript实现的,如果直接使用js实现相应的功能则显得很直观和简便。...还有一些批处理,数据同步都可以使用js 使用js脚本进行交互的优点与缺点 (1)无需任何驱动或语言支持; (2)方便cron或管理员定时任务; (3)注意点:任然是数据格式的问题;...js脚本一般会用来执行以下任务 (1)备份; (2)调度map-reduce命令; (3)离线报告,离线任务; (4)管理员定时任务; 如何运行一个js脚本 .

    9.4K30

    mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改

    mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改 原文连接:直通车 Mongodb并不提供Alter table这样的语句或者工具修改字段类型,只能写程序转...对象id 对象id是文档的12字节的唯一 ID, {"X" :ObjectId() } 日期 日期类型存储的是从标准纪元开始的毫秒数。...因为MongoDB中有3种数字类型(32位整数、64位整数和64位浮点数),shell必须绕过JavaScript的限制。默认情况下,shell中的数字都被MongoDB当做是双精度数。...对象id是文档的12字节的唯一 ID 系统默认会自动生成 8 Boolean 布尔类型有两个值TRUE和FALSE 9 Date 日期类型存储的是从标准纪元开始的毫秒数。...js parsefloat parseint JavaScript提供了3个显式的类型转换函数,分别是eval()、parseInt()和parseFloat()。

    1.4K30

    mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改

    mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改 Mongodb并不提供Alter table这样的语句或者工具修改字段类型,只能写程序转。...对象id 对象id是文档的12字节的唯一 ID, {"X" :ObjectId() } 日期 日期类型存储的是从标准纪元开始的毫秒数。...因为MongoDB中有3种数字类型(32位整数、64位整数和64位浮点数),shell必须绕过JavaScript的限制。默认情况下,shell中的数字都被MongoDB当做是双精度数。...对象id是文档的12字节的唯一 ID 系统默认会自动生成 8 Boolean 布尔类型有两个值TRUE和FALSE 9 Date 日期类型存储的是从标准纪元开始的毫秒数。...js parsefloat parseint JavaScript提供了3个显式的类型转换函数,分别是eval()、parseInt()和parseFloat()。

    2.1K40
    领券