麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MongoDB > 正文

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

2024-09-07 00:22:35
字體:
來源:轉載
供稿:網友
       MongoDB是一個基于分布式文件存儲的數據庫,是由C++語言編寫的,目的在于為web應用聽可擴展的高性能數據存儲解決方案。MongoDB與SQL還是存在很大不同的,例如它沒有像 SQL 一樣有自動增長的功能,那么mongodb字段值自增長要如何實現呢?
 
       1.創建計數器集合
       期望_id字段從1,2,3,4到n,啟動一個自動遞增的整數序列,如:
 
{
  "_id":1,
  "title": "標題",
  "content": "內容1",
  "type": "類型"
}
       為此,創建 counters 集合,序列字段值可以實現自動長:
 
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.測試
       創建測試集合sms:
 
db.createCollection("sms")
       在sms集合中新增文檔,實現_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實現
       java實現以上功能,數據庫驅動版本不同運行效果有差異,僅供參考:
 
private MongoDatabase conn;
 
static{
  this.conn = getDatabase(databaseName);
}
 
/**
 * 連接數據庫
 * @param databaseName 數據庫名稱
 * @return       數據庫連接對象
 */
private static MongoDatabase getDatabase(databaseName){
  MongoDatabase mongoDatabase = null;
  try{  
    // 連接到 mongodb 服務
    MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  
    // 連接到數據庫
    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());
  }

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美日韩高清一区 | 羞羞电影在线观看www | 免费国产之a视频 | 国产精品片一区二区三区 | xxxx18韩国护士hd老师 | 国产在线免 | 91麻豆精品国产91久久久更新资源速度超快 | 天天躁狠狠躁夜躁2020挡不住 | 成人精品视频在线 | 国产精品亚洲精品日韩已方 | 哪里可以看免费的av | 亚洲午夜久久久久 | 蜜桃欧美性大片免费视频 | 久久久精品视频国产 | 成人三级视频网站 | 色视频在线播放 | 99re久久最新地址获取 | 久久精品一区二区三区不卡牛牛 | 一区国产在线 | 国产精品入口夜色视频大尺度 | 国产成年人视频网站 | 精品亚洲视频在线 | 欧美在线观看视频一区 | 日日草夜夜草 | 精品三级内地国产在线观看 | 国产伦久视频免费观看视频 | 一区二区三区在线观看视频 | 一区二区三区黄色 | 久久精品探花 | 在线成人www免费观看视频 | 久久久久久久久日本理论电影 | 国内精品伊人久久 | 日本一级黄色大片 | 九九视频在线观看黄 | 亚洲骚妻| 国产成年人在线观看 | 手机国产乱子伦精品视频 | 日本在线不卡一区二区 | 日本黄色一级视频 | 欧美一区黄色 | 91福利免费视频 |