mongodb和mysql中自动增长id_MongoDB 自动增长
MongoDB 自动增长
MongoDB 没有像 SQL 一样有自动增长的功能,
MongoDB 的 _id 是系统自动生成的12字节唯一标识。
但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。
由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在
counters 集合中实现_id字段自动增长。
使用 counters 集合
考虑以下 products 文档。我们希望 _id 字段实现
从 1,2,3,4 到 n 的自动增长功能。
{
"_id":1,
"product_name": "Apple iPhone",
"category": "mobiles"
}
为此,创建 counters 集合,序列字段值可以实现自动长:
>db.createCollection("counters")
现在我们向 counters 集合中插入以下文档,使用 productid 作为 key:
{
"_id":"productid",
"sequence_value": 0
}
sequence_value 字段是序列通过自动增长后的一个值。
使用以下命令插入 counters 集合的序列文档中:
>db.counters.insert({_id:"productid",sequence_value:0})
创建 Javascript 函数
现在,我们创建函数 getNextSequenceValue 来作为序列名的输入,
指定的序列会自动增长 1 并返回最新序列值。在本文的实例中序列名为 productid
。
>function getNextSequenceValue(sequenceName){
var sequenceDocument = db.counters.findAndModify(
{
query:{_id: sequenceName },
update: {$inc:{sequence_value:1}},
"new":true
});
return sequenceDocument.sequence_value;
}
使用 Javascript 函数
接下来我们将使用 getNextSequenceValue 函数创建一个新的文档,
并设置文档 _id 自动为返回的序列值:
>db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"Apple iPhone",
"category":"mobiles"})
>db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"Samsung S3",
"category":"mobiles"})
就如你所看到的,我们使用 getNextSequenceValue 函数来设置 _id 字段。
为了验证函数是否有效,我们可以使用以下命令读取文档:
>db.products.find()
以上命令将返回以下结果,我们发现 _id 字段是自增长的:
{ "_id" : 1, "product_name" : "Apple iPhone", "category" : "mobiles"}
{ "_id" : 2, "product_name" : "Samsung S3", "category" : "mobiles" }
mongodb和mysql中自动增长id_MongoDB 自动增长相关推荐
- mysql 获取递增id_如何在MySQL中获取下一个自动递增ID?
MySQL具有AUTO_INCREMENT关键字来执行自动增量.AUTO_INCREMENT的起始值为1,这是默认值.每条新记录将增加1. 要获得MySQL中的下一个自动增量ID,我们可以使用MySQ ...
- mongodb在mysql中怎么用,mongoDB数据库基本操作
mongoDB中聚集集合(collection/coll)相当于mysql中的表 文档相当于mysql中的每一行数据 常用命令 1.获得帮助命令db.help() db.表名.help() db.表名 ...
- mongodb和mysql中自动增长id_如何在java中维护MongoDB的_id字段的自动增长
_id字段是MongoDB中一个特殊的字段,它的类型为BSON ObjectId.它是每条记录的第一个属性,并且该属性值必须唯一. BSON ObjectId长12个字节,包含4字节的时间戳.3字节的 ...
- studio3T import a SQL Database to Mongodb(从mysql中导入数据到mongodb)
具体参考studio3T官方文档:Import a SQL Database to MongoDB in 5 Steps | Studio 3T 1.打开SQL Migration-->选择SQ ...
- mysql临时密码不能用,自动生成临时密码后无法访问MySQL
自动生成临时密码后无法访问MySQL 我已经删除并安装了OSX 10.11 El Capitan并且我一直在通过本教程学习如何在新的OS X上运行MySQL .第一步是下载MySQL For Mac ...
- mysql中datetime如何用实体类封装_死磕了关于MyBatis10种超好用的写法
用来循环容器的标签forEach,查看例子 foreach元素的属性主要有item,index,collection,open,separator,close. item:集合中元素迭代时的别名 in ...
- MySQL中的自动增长
hello,大家好,我是你们的怪味老王,今天我们简单的说说自动增长 自动增长的作用: 问题:为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败. 如何解决:为主键生成自动增长的值 ...
- sqlserver新增主键自增_深入Mysql,SqlServer,Oracle主键自动增长的设置详解
1.把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id i ...
- 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
1.把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: 复制代码 代码如下: create table c ...
最新文章
- 为什么 OLAP 需要列式存储
- 20172310 2017-2018-2 《程序设计与数据结构》第四周学习总结
- 梯度下降法(一)入门
- C语言实验——求一个3*3矩阵对角线元素之和
- tomcat启动时一闪而过的几种原因
- 【springboot】mybatis-generator+tkmybatis通用mapper+swagge+redis缓存整合使用
- No services have been found解决方案
- PHP iconv 解决utf-8和gb2312编码转换问题
- 批量获取ip运营商_通信公司员工收钱开通IP多拨被用于诈骗,6人获刑
- 如何利用工业大数据降本增效
- [恢]hdu 2003
- pp模块常用表 sap_SAP财务常用的PP模块事务代码清单
- 利用python编写个性二维码制作工具(支持微信名片二维码),并打包成EXE可执行文件。——001
- 华硕计算机在哪里看显卡cpussD,显卡怎么看型号(怎么看华硕显卡的性能档次)...
- C# 之 ZipOutPutStream 压缩文件
- iOS对sqlite3进行封装
- 文化馆建筑方案设计原理及方案
- 打开Windows自带的画图工具
- 优购小程序项目效果预览
- LeetCode 27 移除元素 题解
热门文章
- 基于JAVA+Servlet+JSP+MYSQL的学生选课系统
- 基于JAVA+SpringBoot+Mybatis+MYSQL的旅游信息管理系统
- JAVA基础系列:内部类获取外部类的成员变量
- 阅读笔记11-孤独后厂村:30万互联网人跳不出的中国硅谷
- web前端学习笔记(二)---Django
- JAVA虚拟机垃圾回收算法原理
- JavaScript与JSP区别
- 在ASP.NET中使用FCKeditor V2
- php入职头一星期,入职一周就想离职,真的是我太飘了吗?
- zuul转发服务一直报404_SpringCloud之Zuul的多个使用场景