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

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

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

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

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

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

可以查看一下是否成功

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

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

然后每次在db.user集合里添加新用戶(hù)之前 在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è)操作,所以具有原子性,多線程不會(huì)沖突。

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

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

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

>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://www.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,可以自己對(duì)這些操作封裝一下,只用傳幾個(gè)參數(shù)就可以返回自增的id,還可以實(shí)現(xiàn)像Oracle的跨表的自增id。

自己寫(xiě)了一段php的,拿出來(lái)給大家分享。

<?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://www.fzitv.net/ '));
$conn->close();
?>

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

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

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

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

相關(guān)文章

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

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

    MongoDB是一個(gè)開(kāi)源、高性能、無(wú)模式(模式自由)的文檔(Bson)型數(shù)據(jù)庫(kù),這篇文章主要介紹了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ù)庫(kù)的方法講解

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

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

    MongoDB特定類(lèi)型的查詢(xún)語(yǔ)句實(shí)例

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

    常用的MongoDB查詢(xún)語(yǔ)句的示例代碼

    最近做了幾個(gè)規(guī)則邏輯。用到mongo查詢(xún)比較多,就是查詢(xún)交易信息跑既定規(guī)則篩選出交易商戶(hù),使用聚合管道進(jìn)行統(tǒng)計(jì)和取出簡(jiǎn)單處理后的數(shù)據(jù),用SQL代替業(yè)務(wù)代碼邏輯的判斷,本文給大家介紹Mongodb查詢(xún)語(yǔ)句的示例代碼,一起看看吧
    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ù)庫(kù)基礎(chǔ)操作

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

    下面小編就為大家?guī)?lái)一篇老生常談MongoDB數(shù)據(jù)庫(kù)基礎(chǔ)操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Windows安裝壓縮版MongoDB的教程

    Windows安裝壓縮版MongoDB的教程

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

    MongoDB快速入門(mén)筆記(二)之MongoDB的概念及簡(jiǎn)單操作

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

最新評(píng)論

遂宁市| 祥云县| 温泉县| 南开区| 阿合奇县| 玉溪市| 虎林市| 西华县| 罗甸县| 永和县| 柯坪县| 玉门市| 刚察县| 海晏县| 绥芬河市| 蒙城县| 嘉祥县| 项城市| 阆中市| 宣城市| 伽师县| 广东省| 巴林左旗| 子长县| 海南省| 大宁县| 南丹县| 新乐市| 乐业县| 呼和浩特市| 咸阳市| 陆河县| 桐城市| 茂名市| 金湖县| 自治县| 阳新县| 贵德县| 南和县| 博白县| 哈密市|