a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

mongodb完成字段值自動增長功能示例

2024-09-07 00:22:35
字體:
供稿:網(wǎng)友
       MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,是由C++語言編寫的,目的在于為web應(yīng)用聽可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDB與SQL還是存在很大不同的,例如它沒有像 SQL 一樣有自動增長的功能,那么mongodb字段值自增長要如何實現(xiàn)呢?
 
       1.創(chuàng)建計數(shù)器集合
       期望_id字段從1,2,3,4到n,啟動一個自動遞增的整數(shù)序列,如:
 
{
  "_id":1,
  "title": "標題",
  "content": "內(nèi)容1",
  "type": "類型"
}
       為此,創(chuàng)建 counters 集合,序列字段值可以實現(xiàn)自動長:
 
db.createCollection("counters")
       初始化集合,以objId作為主鍵,sequence_value 字段是序列通過自動增長后的一個值:
 
db.counters.insert({_id:"objId",sequence_value:0})
       2.查詢序列號
       查詢返回更新后的序列號
 
db.counters.findAndModify({
  query: {_id: "objId" },
  update: {$inc:{sequence_value:1}},
  new: true
}).sequence_value;
        3.測試
       創(chuàng)建測試集合sms:
 
db.createCollection("sms")
       在sms集合中新增文檔,實現(xiàn)_id自增長:
 
db.sms.insert({
  _id: db.counters.findAndModify({query:{_id: "objId" },update: {$inc:{sequence_value:1}},"new":true}).sequence_value,
  title: "標題1",
  content: "短信1",
  type: "1"
})
       查詢sms集合:
 
db.sms.find({}).sort({_id:1})
 
 
       4.java實現(xiàn)
       java實現(xiàn)以上功能,數(shù)據(jù)庫驅(qū)動版本不同運行效果有差異,僅供參考:
 
private MongoDatabase conn;
 
static{
  this.conn = getDatabase(databaseName);
}
 
/**
 * 連接數(shù)據(jù)庫
 * @param databaseName 數(shù)據(jù)庫名稱
 * @return       數(shù)據(jù)庫連接對象
 */
private static MongoDatabase getDatabase(databaseName){
  MongoDatabase mongoDatabase = null;
  try{  
    // 連接到 mongodb 服務(wù)
    MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  
    // 連接到數(shù)據(jù)庫
    MongoDatabase mongoDatabase = mongoClient.getDatabase(databaseName);
    System.out.println("Connect to database successfully");
    
  }catch(Exception e){
    System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  return mongoDatabase;
}
 
/**
 * 獲取最新序列號
 * @return 序列號
 */
private static int getNextSequenceValue(){
  DBCollection collection = conn.getCollection("counters");
  DBObject query = new BasicDBObject("_id", new BasicDBObject("$eq", "objId"));
  DBObject newDocument =new BasicDBObject();
  newDocument.put("$inc", new BasicDBObject().append("sequence_value", 1));
  newDocument.put("new": true);
  DBObject ret = collection.findAndModify(query, newDocument);
  if (ret == null){
    return 0;
  }else{
    return (Integer)ret.get("sequence_value");
  }
}
 /**
 * 查詢集合
 */
public static void findSms(){
  DBCollection collection = conn.getCollection("sms");
  FindIterable<Document> findIterable = collection.find();
  MongoCursor<Document> mongoCursor = findIterable.iterator();
  while(mongoCursor.hasNext()){
    System.out.println(mongoCursor.next());
  }

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品久久久久久久竹霞 | 国产视频中文字幕 | 亚洲久草 | 综合伊人 | 国产综合久久 | 久久久久99 | 精品久久久久久久久久久久久久 | 欧美日韩国产高清 | 欧美日韩在线精品 | 色狠狠一区 | 成人在线视频免费观看 | 91高清视频在线观看 | 成人免费视频观看视频 | 中文字幕一页二页 | 国产在线一区二区 | 久久国产精品免费一区二区三区 | 日韩精品一区在线 | 人人人人澡 | 嫩草影院懂你的 | 国产污视频网站 | 久操草 | 一本大道综合伊人精品热热 | 欧美黄色片 | 欧美一级片在线观看 | 成人看片免费 | 日本一级中文字幕久久久久久 | 国产精品国产三级国产专播品爱网 | 99亚洲国产精品 | 国产福利片在线观看 | 人人av在线 | 久久亚洲成人av | 亚洲激情久久 | 成人一级电影在线观看 | 久久久99精品免费观看 | 色呦呦网站 | 日本黄区免费视频观看 | 狠狠操夜夜操天天操 | 国内精品久久久久国产 | 欧美一区二区三区成人精品 | 一区二区精品视频 | 男女视频一区二区 |