使用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. Could not find a version that satisfies the requirement PIL

    Python Imageing Library 简称 PIL Python常用的图像处理库之一 Pillow是PIL一个fork. C:\Users\dangzhengtao>pip insta ...

  2. JSF相关介绍

    About JavaServer Faces technology simplifies building user interfaces for JavaServer applications. D ...

  3. Qt实现 动态化遍历二叉树(前中后层次遍历)

    binarytree.h 头文件 #ifndef LINKEDBINARYTREE_H #define LINKEDBINARYTREE_H #include<c++/algorithm> ...

  4. Codeforces 977D: Divide by three, multiply by two(暴力)

    题意 有nnn个无序的数,对这些数进行排列,要求ai=3×ai+1a_i=3\times a_{i+1}ai​=3×ai+1​或2×ai=ai+12\times a_i=a_{i+1}2×ai​=ai ...

  5. mock数据,尽量随机,1次插入多条

    建表,多设置一个字段id_tmp create table if not exists mall_data.dtw_mall2_adm_customer_d_tmp( id_tmp string co ...

  6. 用户控件 RadioButtonList

    public static MvcHtmlString RadioButtonList(this HtmlHelper htmlHelper, string name, string codeCate ...

  7. 解决win7无法运行bat批处理文件的方法

    在win7系统中我们可以将一些命令制作为bat批处理文件,只需双击打开即可运行命令,方便使用. 那么,要怎么运行bat批处理呢?最近有用户反馈,遇到无法运行bat批处理的现象,该怎么办呢? 修复方法一 ...

  8. c#函数地址传入c++

    c# private delegate void ValidateEvent(int eventCode); private static void ValidateEventCallback(int ...

  9. saltstack实战1-salt-syndic

    Syndic建立在中心Master和Minions之间, 并允许多层分级Syndic, 使Salt拓扑可以变得更为灵活. 那么Syndic是如何工作的? 当前有哪些优势和局限哪? Syndic的优势和 ...

  10. Filebeat工作过程(二)

    Filebeat简介 Filebeat是一个轻量级的收集日志和传输日志的工具(一直以为Filebeat是存储数据,并不是的它只是做一个收集传输功能):Filebeat安装在每一个你想要收集日志的服务器 ...