MongoDB自动增长

MongoDB 没有像SQL一样有自动增长的功能,如果我们需要实现ObjectId自动增长功能,可以通过编程的方式来实现。步骤如下:

1. 创建counters集合:

db.createCollection("counters")

2. 向counters中插入一个文档:

db.counters.insert({_id:"productid",key_value:0})

3. 创建Javascript函数:

function getNextKeyValue(keyName){

var keyDocument = db.counters.findAndModify(

{

query:{_id: keyName},

update: {$inc:{key_value:1}},

new:true

});

return keyDocument.key_value;

}

4. 使用javascript函数实现自动增长:

示例:

db.products.insert({

"_id":getNextKeyValue("productid"),

"product_name":"Apple iPhone",

"category":"mobiles"})

时间: 2024-07-30 13:42:42

MongoDB自动增长的相关文章

MongoDB 自动增长

MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识. 但在某些情况下,我们可能需要实现 ObjectId 自动增长功能. 由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在 counters 集合中实现_id字段自动增长. 使用 counters 集合 考虑以下 products 文档.我们希望 _id 字段实现 从 1,2,3,4 到 n 的自动增长功能. { "_id":1, &quo

MongoDB 字段增长

MongoDB中存储的文档必须有一个"_id"键.这个键的值可以是任何类型的,默认是个ObjectId对象. ObjectId 是一个12字节 BSON 类型数据,有以下格式: 前4个字节表示时间戳 接下来的3个字节是机器标识码 紧接的两个字节由进程id组成(PID) 最后三个字节是随机数. 在一个集合里面,每个集合都有唯一的"_id"值,来确保集合里面每个文档都能被唯一标识. MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要

mysql字段是自动增长类型结果却不是连续的

今天建了一张表,设置其"id"属性为自动增加类型,但是在查看所有数据的时候,却发现"id"的值不是连续增加的.建表的语法如下: mysql> create table person_list -> ( -> id int auto_increment unique, -> name varchar(15) not null, -> sex varchar(15) default "中", -> ID_C var

备忘:Hibernate id注解,自动增长

ID自动增长 @Id @GeneratedValue(strategy=GenerationType.IDENTITY) .

SQL Server 2012 自动增长列,值跳跃问题

介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中存在,SQL Server 2012之前版本不存在此问题. 背景

oracle 数据表中实现字段的自动增长

由于一直用的是Mysql数据库,今天刚好心血来潮,想着和Java都是同一个老板出来的oracle自己却不会,说出去会不会有点丢人,故就开始翻资料,看视频搞起来,一步一个脚 印,想着写点什么,就开始从创建表开始吧,好了,废话不多说了,开始上正题创建一个表: User表: create table user(    id number(5,0) not null primary key auto_increment,    deptid number(5,0) not null,    userna

oracle ORA-01653 表空间不能自动增长的原因及处理方法

背景:表空间已经设置自动增长,但达到一定大小后仍会报ORA-01653. 解决过程: 查阅相关资料,多数只给出了解决办法,但这个解决办法经过验证也是临时了,到了一定大小仍旧会报错,到时只能再次采取同样办法进行操作. 通过几台机器的观察发现,报出该错误时,数据表文件的大小是一致的32G.因此判断,某种原因导致了该限制.于是进行相关搜索,最终找到了答案,但是,对于这一问题描述,有2个说法:1.windows系统下,单文件有32G的限制,但该说法我没有查到有力的支持证据,即便有其他人提到该说法,但并没

数字自动增长

手动指定一个起始值,然后指定开始时间,再指定一个每天增长的量,便可以实现一个按时间自动增长的数字. 1 function randomNumber(s,d,n){ 2 3 var startDate = new Date(d).getTime(), 4 curDate = new Date().getTime(), 5 ratio = parseFloat(new Number(n/86400).toFixed(4)); 6 return parseInt((curDate - startDat

mysql 更改自动增长列的初始值

alter table t_Myxiao7 AUTO_INCREMENT 3;   -- 从三开始 ITOKIT.COM提示:如果表中数据没有用.如果直接删除数据,自动增长ID还是不会从1开始的,可以利用“清空数据表”.这样自动增长ID也将会从1开始.