使用find_and_modify函数可以设置mongo的id为自增

且可以支持原有的高并发操作,find_and_modify函数完成更新查找两个操作其是原子性的操作

代码:(auto_id.py)

#coding:utf-8import pymongo

client=pymongo.MongoClient('localhost',27017)#链接数据库

#创建dbdb数据库db =client['dbdb']

#创建username_id集合username_id = db['username_id']

#自增函数def getNextValue(user_Name):    ret = username_id.find_and_modify({"_id": user_Name}, {"$inc": {"sequence_value": 1}}, safe=True, new=True)    new = ret["sequence_value"]    return new

if __name__=='__main__':    #插入username_id    username_id.insert_one(({'_id': "name", 'sequence_value': 0}))

代码(username.py)

import pymongofrom auto_id import getNextValue#导入自增函数client=pymongo.MongoClient('localhost',27017)#链接数据库

db =client['dbdb']

#创建user_name集合user_name =db['user_name']

if __name__=='__main__':    list_name=['xiaoming','zhangsan','wangwu','lisi']    for n in list_name:        user_name.insert_one({'_id':getNextValue('name'),'myname':n})    for i in user_name.find():        print(i)

执行username.py之前一定要先运行auto_id.py让原始id为0,这样下次就从1开始。

切记住,auto_id.py 只需运行一次。我们只需调用getNextValue函数,其便会自动增长。

结果:

{'_id': 1, 'myname': 'xiaoming'}{'_id': 2, 'myname': 'zhangsan'}{'_id': 3, 'myname': 'wangwu'}{'_id': 4, 'myname': 'lisi'}

数据库中id为自增的更多相关文章

  1. 用CI框架向数据库中实现简单的增删改查

    以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html Code ...

  2. 不能收缩 ID 为 %s 的数据库中 ID 为 %s 的文件,因为它正由其他进程收缩或为空。

    SQLServer数据库通常都不建议进行SHRINKFILE操作,因为SHRINKFILE不当会造成一定的性能问题. 但是当进行了某些操作(例如某个超大的日志类型表转成分区表切换了数据文件),数据库某 ...

  3. 关于php中id设置自增后不连续的问题

    alter table tablename drop column id;alter table tablename add id mediumint(8) not null primary key ...

  4. 用PHP向数据库中实现简单的增删改查(纯代码)

    <?php $con = mysql_connect("localhost:3306","root",""); if (!$con) ...

  5. Java中获取刚插入数据库中的数据Id(主键,自动增长)

    public int insert(String cName, String ebrand, String cGender) { String sql = "insert into Clot ...

  6. 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页

    在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...

  7. MVC模式:实现数据库中数据的增删改查功能

    *.数据库连接池c3p0,连接mysql数据库: *.Jquery使用,删除时跳出框,确定是否要删除: *.使用EL和JSTL,简化在jsp页面中插入的java语言 1.连接数据库 (1)导入连接数据 ...

  8. MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

    设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...

  9. 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照:对数据进行增删改查)

    我们常常会用到通过图书的名称来查询图书那么这种话我们也就会使用到从数据库中搜索出数据而且载入到自己的Jsp页面中 这种话我们须要将从数据库中获取到的数据放进响应中然后通过%=request.getAt ...

随机推荐

  1. 浏览器h5新建文件 保存到本地(相当于浏览器写文件)

    function doSave(value, type, name) {         var blob;         if (typeof window.Blob == "funct ...

  2. python多进程拷贝数据

    from multiprocessing import Pool,Manager import os #完成拷贝文件 def copyFile(filename,oldname,newname,que ...

  3. Go语言切片

    切片 Go 语言切片相当于是对数组的抽象. 由于Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比 ...

  4. java 使用post 请求php接口

    遇到问题:php无法正常接收post参数,原因php只有当content-type为content-type为application/x-www-data-urlencoded和multipart/f ...

  5. oracle 11g log archive mode flashback

    修改需要在mount状态下 shutdown immediate; startup mount; alter database archivelog; alter database flashback ...

  6. 20164318 毛瀚逸 Exp3 免杀原理与实践

    1实验要求 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程(1 ...

  7. Spark菜鸟记录

    1.RDD[(k,v)] join()优化,join之前会对两个RDD的key做hash,通过网络把相同hash值的数据传到同一个节点,因此对多次join的RDD 做预分区与持久化可提高效率. map ...

  8. tomcat使用自签名证书实现https加密访问

    部署好java环境和tomcat之后 执行以下语句 #生成证书,keytool是java工具命令,-genkey生成证书,-alias证书名称,-keyalg应该是指算法,-keystore是证书存储 ...

  9. DevExpress GridControl控件行内新增、编辑、删除添加选择框

    以下为内容以图片居多1234表示点击顺序 先新增一行 操作和新增数据行一样 打开ColumnEdit  选择new ButtenEdit  new上方会出现一个系统命名的button 命名可以更改必须 ...

  10. Spring Boot Admin 的使用

    Spring Boot 版本: 1.5.20 一.Spring Boot Admin Server 1.在pom.xml中增加 <dependency> <groupId>or ...