最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mongodb自增id實(shí)現(xiàn)方法

 更新時(shí)間:2016年07月11日 09:54:31   作者:張文君  
這篇文章主要介紹了Mongodb自增id實(shí)現(xiàn)方法,分析了MongoDB數(shù)據(jù)庫自增ID的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Mongodb自增id實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

首先創(chuàng)建一個(gè)自動增長id集合 ids

>db.ids.save({name:"user", id:0});

可以查看一下是否成功

> db.ids.find();
{ "_id" : ObjectId("4c637dbd900f00000000686c"), "name" : "user", "id" : 0 }

然后每次添加新用戶之前自增一下 ids集合 獲得id

然后每次在db.user集合里添加新用戶之前 在db.ids集合中的name="user"文檔的id值加1返回文檔

>userid = db.ids .findAndModify({update:{$inc:{'id':1}}, query:{"name":"user"}, new:true});
{ "_id" : ObjectId("4c637dbd900f00000000686c"), "name" : "user", "id" : 1 }

注:因?yàn)閒indAndModify是一個(gè)方法完成更新查找兩個(gè)操作,所以具有原子性,多線程不會沖突。

然后保存相應(yīng)的數(shù)據(jù)

>db.user .save({uid:userid.id, username:"dotcoo", password:"dotcoo", info:"http://m.fzitv.net/ "});
// --------- update 2011-03-27 13:11 ------------------------

其實(shí)上邊兩行可以寫為一步

>db.user .save({
  uid: db.ids .findAndModify({
    update:{$inc:{'id':1}},
    query:{"name":"user"},
    new:true}).id, //讓db.ids集合中的name="user"文檔的id值加1并返回充當(dāng)自增id
  username: "dotcoo",
  password:"dotcoo",
  info:"http://m.fzitv.net/  "});
// --------- update 2011-03-27 13:11 ------------------------

查看結(jié)果

> db.user.find();
{ "_id" : ObjectId("4c637f79900f00000000686d"), "uid" : 1, "username" : "admin", "password" : "admin" }

這是mongo的shell,如果用的是服務(wù)器端程序Java php Python,可以自己對這些操作封裝一下,只用傳幾個(gè)參數(shù)就可以返回自增的id,還可以實(shí)現(xiàn)像Oracle的跨表的自增id。

自己寫了一段php的,拿出來給大家分享。

<?php
function mid($name, $db){
  $update = array('$inc'=>array("id"=>1));
  $query = array('name'=>$name);
  $command = array(
      'findandmodify'=>'ids', 'update'=>$update,
      'query'=>$query, 'new'=>true, 'upsert'=>true
  );
  $id = $db->command($command);
  return $id['value']['id'];
}
$conn = new Mongo();
$db = $conn->idtest;
$id = mid('user', $db);
$db->user->save(array('uid'=>$id, 'username'=>'kekeles', 'password'=>'kekeles', 'info'=>'http://m.fzitv.net/ '));
$conn->close();
?>

其具體實(shí)現(xiàn)方式主要是利用MongoDB中findAndModify命令,只要每次往MongoDB里insert對象前生成ID賦值給_id就OK了,因?yàn)樗膶?shí)現(xiàn)滿足原子性,所以不存在并發(fā)問題。

另外說明一點(diǎn),findAndModify本身提供了一個(gè)upsert參數(shù),為true的話可以自動insert,但那樣就不能自定義初始值了,所以文中示例沒有使用upsert。

BTW,數(shù)據(jù)庫“_seq”的名字以下劃線開頭,這樣列表的時(shí)候會排在前面,容易分辨。

希望本文所述對大家MongoDB數(shù)據(jù)庫程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • MongoDB安裝及接入springboot的詳細(xì)過程

    MongoDB安裝及接入springboot的詳細(xì)過程

    MongoDB是一個(gè)開源、高性能、無模式(模式自由)的文檔(Bson)型數(shù)據(jù)庫,這篇文章主要介紹了MongoDB安裝及接入springboot,需要的朋友可以參考下
    2024-05-05
  • mongodb 中rs.stauts()命令參數(shù)解析

    mongodb 中rs.stauts()命令參數(shù)解析

    MongoDB的rs.status()命令是查看副本集狀態(tài)的重要工具,它可以展示副本集中各個(gè)成員的角色、健康狀態(tài)、同步進(jìn)度等關(guān)鍵信息,本文介紹mongodb 中rs.stauts()命令參數(shù)解析,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • MongoDB連接和創(chuàng)建數(shù)據(jù)庫的方法講解

    MongoDB連接和創(chuàng)建數(shù)據(jù)庫的方法講解

    這篇文章介紹了MongoDB連接和創(chuàng)建數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • MongoDB特定類型的查詢語句實(shí)例

    MongoDB特定類型的查詢語句實(shí)例

    在關(guān)系型數(shù)據(jù)庫中,可以實(shí)現(xiàn)基于表的各種各樣的查詢,下面這篇文章主要給大家介紹了關(guān)于MongoDB特定類型查詢的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 常用的MongoDB查詢語句的示例代碼

    常用的MongoDB查詢語句的示例代碼

    最近做了幾個(gè)規(guī)則邏輯。用到mongo查詢比較多,就是查詢交易信息跑既定規(guī)則篩選出交易商戶,使用聚合管道進(jìn)行統(tǒng)計(jì)和取出簡單處理后的數(shù)據(jù),用SQL代替業(yè)務(wù)代碼邏輯的判斷,本文給大家介紹Mongodb查詢語句的示例代碼,一起看看吧
    2021-07-07
  • 淺談MySQL和MariaDB區(qū)別(mariadb和mysql的性能比較)

    淺談MySQL和MariaDB區(qū)別(mariadb和mysql的性能比較)

    MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品
    2018-02-02
  • MongoDB學(xué)習(xí)筆記之GridFS使用介紹

    MongoDB學(xué)習(xí)筆記之GridFS使用介紹

    這篇文章主要介紹了MongoDB學(xué)習(xí)筆記之GridFS使用介紹,本文介紹了GridFS的作用、GridFS的一些使用方法、GridFS實(shí)現(xiàn)原理及注意事項(xiàng)等,需要的朋友可以參考下
    2015-07-07
  • 老生常談MongoDB數(shù)據(jù)庫基礎(chǔ)操作

    老生常談MongoDB數(shù)據(jù)庫基礎(chǔ)操作

    下面小編就為大家?guī)硪黄仙U凪ongoDB數(shù)據(jù)庫基礎(chǔ)操作。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Windows安裝壓縮版MongoDB的教程

    Windows安裝壓縮版MongoDB的教程

    MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。這篇文章主要介紹了Windows安裝壓縮版MongoDB的教程,需要的朋友可以參考下
    2019-12-12
  • MongoDB快速入門筆記(二)之MongoDB的概念及簡單操作

    MongoDB快速入門筆記(二)之MongoDB的概念及簡單操作

    MongoDB是面向集合的文檔式數(shù)據(jù)庫,不像關(guān)系數(shù)據(jù)庫那樣,有表,列、行,mongoDB數(shù)據(jù)庫則是由一系列的文檔組成。接下來通過本文給大家介紹MongoDB的概念及簡單操作,一起看看吧
    2016-06-06

最新評論

剑河县| 明光市| 沭阳县| 自治县| 衡南县| 梓潼县| 寿阳县| 水城县| 东乡县| 灵武市| 兴和县| 大城县| 阜新| 贞丰县| 会昌县| 奇台县| 白城市| 轮台县| 汶上县| 兴业县| 萝北县| 庆安县| 罗定市| 巴青县| 衡东县| 麟游县| 常州市| 莱芜市| 永登县| 南和县| 娱乐| 九龙城区| 昌黎县| 两当县| 扬中市| 措美县| 邓州市| 罗定市| 奉贤区| 贡嘎县| 宁陵县|