lsyf8 发表于 2018-10-27 14:29:04

java实现mongodb中自增长字段

  在数据库设计原理中;自增长字段的目的是为了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>  if(id != 0){
  DBCollection table = conn.getDb().getCollection("admin_user");
  DBObject query = new BasicDBObject();

  query.put("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);
  }
  }

页: [1]
查看完整版本: java实现mongodb中自增长字段