国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

mongodb完成字段值自動(dòng)增長(zhǎng)功能示例

2024-09-07 00:22:35
字體:
供稿:網(wǎng)友
       MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫,是由C++語言編寫的,目的在于為web應(yīng)用聽可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB與SQL還是存在很大不同的,例如它沒有像 SQL 一樣有自動(dòng)增長(zhǎng)的功能,那么mongodb字段值自增長(zhǎng)要如何實(shí)現(xiàn)呢?
 
       1.創(chuàng)建計(jì)數(shù)器集合
       期望_id字段從1,2,3,4到n,啟動(dòng)一個(gè)自動(dòng)遞增的整數(shù)序列,如:
 
{
  "_id":1,
  "title": "標(biāo)題",
  "content": "內(nèi)容1",
  "type": "類型"
}
       為此,創(chuàng)建 counters 集合,序列字段值可以實(shí)現(xiàn)自動(dòng)長(zhǎng):
 
db.createCollection("counters")
       初始化集合,以objId作為主鍵,sequence_value 字段是序列通過自動(dòng)增長(zhǎng)后的一個(gè)值:
 
db.counters.insert({_id:"objId",sequence_value:0})
       2.查詢序列號(hào)
       查詢返回更新后的序列號(hào)
 
db.counters.findAndModify({
  query: {_id: "objId" },
  update: {$inc:{sequence_value:1}},
  new: true
}).sequence_value;
        3.測(cè)試
       創(chuàng)建測(cè)試集合sms:
 
db.createCollection("sms")
       在sms集合中新增文檔,實(shí)現(xiàn)_id自增長(zhǎng):
 
db.sms.insert({
  _id: db.counters.findAndModify({query:{_id: "objId" },update: {$inc:{sequence_value:1}},"new":true}).sequence_value,
  title: "標(biāo)題1",
  content: "短信1",
  type: "1"
})
       查詢sms集合:
 
db.sms.find({}).sort({_id:1})
 
 
       4.java實(shí)現(xiàn)
       java實(shí)現(xiàn)以上功能,數(shù)據(jù)庫驅(qū)動(dòng)版本不同運(yùn)行效果有差異,僅供參考:
 
private MongoDatabase conn;
 
static{
  this.conn = getDatabase(databaseName);
}
 
/**
 * 連接數(shù)據(jù)庫
 * @param databaseName 數(shù)據(jù)庫名稱
 * @return       數(shù)據(jù)庫連接對(duì)象
 */
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;
}
 
/**
 * 獲取最新序列號(hào)
 * @return 序列號(hào)
 */
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ā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 民县| 怀柔区| 西盟| 长顺县| 石河子市| 开阳县| 旬邑县| 栾川县| 贡嘎县| 乌拉特后旗| 大新县| 南江县| 香河县| 合阳县| 平乡县| 长春市| 积石山| 邹城市| 吉首市| 新乡市| 新闻| 宁强县| 吉木萨尔县| 荣成市| 隆林| 济南市| 镇沅| 柳河县| 武冈市| 兴义市| 翼城县| 公主岭市| 万源市| 扎囊县| 道孚县| 鄢陵县| 景宁| 绥宁县| 峨眉山市| 兴隆县| 乐昌市|