您好,欢迎访问一九零五行业门户网

Java实现MongoDB中自增长字段

但在oracle和mongodb数据库中有单独的字段判断唯一性;所以设计中没有自增长字段方式(mysql和mssql都有);并且也不提倡用自增长
在数据库设计原理中;自增长字段的目的是为了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);
        }
    }

其它类似信息

推荐信息