mongodb php auto increment 自增

mongodb的自增实现根oracle,postgresql是差不多,都是通过计数器来实现的.

oracle自增实现: 实例说明oracle序列用法

postgresql自增实现: postgresql auto_increment 实现 通用方法

1,mongodb命令行下实现auto_increment

查看复制打印?

  1. > db.counters.insert(             //计数器表
  2. {
  3. _id: "userid",
  4. seq: 0
  5. }
  6. );
  7. WriteResult({ "nInserted" : 1 })
  8. > db.counters.find();
  9. { "_id" : "userid", "seq" : 0 }
  10. > function getNextSequence(name) {      //取下个ID的函数
  11. var ret = db.counters.findAndModify(
  12. {
  13. query: { _id: name },
  14. update: { $inc: { seq: 1 } },  //这里seq就是上面counters表中的seq字段
  15. new: true,
  16. upsert: true
  17. }
  18. );
  19. return ret.seq;
  20. };
  21. > db.users.insert(       //插入数据
  22. {
  23. _id: getNextSequence("userid"),
  24. name: "tank"
  25. }
  26. );
  27. WriteResult({ "nInserted" : 1 })
  28. > db.users.find();     //查看
  29. { "_id" : 1, "name" : "tank" }
  30. > db.users.insert(
  31. {
  32. _id: getNextSequence("userid"),
  33. name: "test"
  34. }
  35. );
  36. WriteResult({ "nInserted" : 1 })
  37. > db.users.find();
  38. { "_id" : 1, "name" : "tank" }
  39. { "_id" : 2, "name" : "test" }

2,php实现auto_increment

查看复制打印?

  1. function getNextId($mongo,$name,$param=array()){
  2. $param += array(   //默认ID从1开始,间隔是1
  3. ‘init‘ => 1,
  4. ‘step‘ => 1,
  5. );
  6. $update = array(‘$inc‘=>array(‘id‘=>$param[‘step‘]));   //设置间隔
  7. $query = array(‘name‘=>$name);
  8. $command = array(
  9. ‘findandmodify‘ => ‘ids‘,
  10. ‘update‘ => $update,
  11. ‘query‘ => $query,
  12. ‘new‘ => true
  13. );
  14. $id = $mongo->db->command($command);
  15. if (isset($id[‘value‘][‘id‘])) {
  16. return $id[‘value‘][‘id‘];
  17. }else{
  18. $mongo->insert(array(
  19. ‘name‘ => $name,
  20. ‘id‘ => $param[‘init‘],     //设置ID起始数值
  21. ));
  22. return $param[‘init‘];
  23. }
  24. }
  25. $mongo = new Mongo();
  26. $curDB = $mongo->selectCollection(‘test‘, ‘ids‘);     //test库中的ids表
  27. $user = $mongo->selectCollection(‘test‘, ‘users‘);      //test库中的users表
  28. $id = getNextId($curDB,‘userid‘,array(‘init‘=>10000,‘step‘=>2));   //取得下一条数据的ID
  29. $obj = array("_id"=>$id,"name"=>"tankzhang");
  30. $user->insert($obj);   //插入数据
时间: 2025-01-10 13:56:15

mongodb php auto increment 自增的相关文章

SQL——AUTO INCREMENT(字段自增)

AUTO INCREMENT -- 在新记录插入表中时生成一个唯一的数字.插入表数据时,该字段不需规定值.    在每次插入新记录时,自动地创建主键字段的值.在表中创建一个 auto-increment 字段.    MySQL:AUTO_INCREMENT        CREATE TABLE tableName        (            col int NOT NULL AUTO_INCREMENT,            PRIMARY KEY (col)        )

SQL AUTO INCREMENT 字段

Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto-increment 字段. 用于 MySQL 的语法 下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键: CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREM

19. AUTO INCREMENT 字段

Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto-increment 字段. 用于 MySQL 的语法 下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键: CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREM

MongoDB下载安装与简单增删改查

Windows下MongoDB的安装和配置.启动和停止 下载地址:MongoDB的官方下载网址是:https://www.mongodb.org/downloads 安装步骤1. 点击下载的mongodb-win32-x86_64-2008plus-ssl-3.0.4-signed.msi,下一步,下一步over. 安装步骤2. 我这里是默认安装路径,复制路径: C:\Program Files\MongoDB\Server\3.0\bin 打开cmd窗口,输入以下命令 1.> cd C:\Pr

sql server auto increment - trace flag 272

从 sql 2012 开始, 微软为了让 insert 时 auto increment 快一些,做了一个 cache 的机制. 这个机制虽然好,但是也有麻烦的情况,如果你的 sql 突然 restart 了, 那么这个 cache 就流失了 这回导致你的 sql auto increment Id 突然跳 1000, 比如从 45,46...1047. 如果这个你很在意这个号码的顺序. 那么你可以关掉这个 cache 机制. refer : http://www.dfarber.com/com

MySQL auto increment - the MySQL auto_increment attribute

MySQL FAQ: How do I define a MySQL auto increment field? Here's an example of the way I normally create a MySQL auto increment (auto_increment) field: create table pizzas ( id int auto_increment not null, name varchar(32) not null, primary key (id) )

SQL-W3School-高级:SQL AUTO INCREMENT 字段

ylbtech-SQL-W3School-高级:SQL AUTO INCREMENT 字段 1.返回顶部 1. Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto-increment 字段. 用于 MySQL 的语法 下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment

MySQL----主键(PRIMARY KEY)和自增(AUTO INCREMENT)

UNSIGNED------无符号,没有负数,从0开始ZEROFILL-------零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNEDNOT NULL------非空约束,也就是插入值的时候这个字段必须要给值,值不能为空DEFAULT------默认值,如果插入记录的时候没有给字段赋值,则使用默认值PRIMARY KEY------主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空AUTO_INCREMENT------自动增

MongoDB(2): 增删改操作

附加命令: 1.进入前端操作命令 ./mongo [ip:端口] 说明:默认会自动选本地,端口27017 2.显示所有的库 > show dbs;   或者 show databases; 3.选择库 > use 库名; 4.显示库所有的集合 > show collections;  或者 show tables; 5.显示当前使用的库 > db; 一.操作数据库.文档 1.1.数据库操作 1.创建数据库:MongoDB没有专门创建数据库的语句,可以使用"use"