java实现mongodb中自增长字段

5 篇文章 0 订阅
4 篇文章 0 订阅

    在数据库设计原理中;自增长字段的目的是为了unique的索引来判断每条记录唯一性;同时保证大数据库量的时候的查询速度。
但在oracle和mongodb数据库中有单独的字段判断唯一性;所以设计中没有自增长字段方式(mysql和mssql都有);并且也不提倡用自增长字段设计表结构。
不过经常用习惯这种方式的程序员;oracle和mongodb数据库也可以实现类似的功能;oracle中有sequence方式。
     那我们也可以试试在mongodb数据库中实现自增长字段模式;就是模仿一下oracle中有sequence方式。
1:在mongodb数据库中建立一个名为:sequence的collection;
    2个field:coll_name(记录其它collection名字)和cnt(其它collection的自增长字段最大序号)。
2:java代码:
     //得到用户表的sequence 自增长id
    private static int getSequence(String tableName){
        DBCollection table = conn.getDb().getCollection("sequence");
        DBObject query = new BasicDBObject();
        query.put("coll_name", tableName);
        DBObject newDocument =new BasicDBObject();
        newDocument.put("$inc", new BasicDBObject().append("cnt", 1));
        DBObject ret = table.findAndModify(query, newDocument);
        if (ret == null){
            return 0;
        }else{
            return (Integer)ret.get("cnt") + 1;
        }
    }

   //新增用户
    public static void addUser(UserInfo user){
        int id = getSequence("admin_user");
        if(id != 0){
            DBCollection table = conn.getDb().getCollection("admin_user");
            DBObject query = new BasicDBObject();
            query.put("id", id);
            query.put("name", user.getName());
            query.put("e_mail", user.geteEmail());
            query.put("passwd", user.getPassword());
            query.put("is_del", false);
            query.put("create_time", user.getCreateTime());
            table.insert(query);
        }
    }

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值