使用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. C# 树状图

    效果图: 结构: frmMain层 using hierarchy.BLL; using hierarchy.Model; using System; using System.Collections ...

  2. Java程序第一次作业

    public class yjj { public static void main(String[] args) { System.out.println("Hello Java" ...

  3. dee

    窗口居中def center(self): screen = QDesktopWidget().screenGeometry() size = self.geometry() self.move((s ...

  4. Spring+Mybatis+SpringMVC+Maven+MySql搭建实例(转)

    http://blog.csdn.net/evankaka/article/details/48785513?spm=5176.100239.blogcont28591.10.9Fdj9R

  5. JVM垃圾收集器-Serial Old收集器,Parallel Old收集器

    Serial Old收集器 Serial Old收集器是Serial收集器的老年代版本,它是一个单线程收集器,使用“标记-整理”算法.这个收集器的主要意义也是被Client模式下的虚拟机使用.在ser ...

  6. Linux下安装gradle

    Linux下安装gradle 1. Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具 下面就描述一下如何在linux环境下安装配置gr ...

  7. 第五章jQuery

    DOM文档加载的步骤 解析HTML结构. 加载外部脚本和样式表文件. 解析并执行脚本代码. DOM树构建完成. 加载图片等外部文件. 页面加载完毕. 执行时间不同 window.onload必须等到页 ...

  8. js数据三大储存格式

    一.String格式  做为一个前端者 你第一手得到的数据都是字符串 二.数组格式 1.定义  var arr=[“张三”,”李四”,”王五”]; 数据通过索引去查找对应的元素   arr[3] 2. ...

  9. 6_7_8_10html-css

    Ps:  1.标准流   2.浮动  3.定位  CCS重点 <!DOCTYPE html> <html lang="en"> <head> & ...

  10. docker(基础篇)

    http://naotu.baidu.com/file/f02773930afb2d3d9e71621249099d31 centos7安装  https://yq.aliyun.com/articl ...