日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mongodb 自动增长 自增id 实现

發布時間:2024/9/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongodb 自动增长 自增id 实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mongodb 自動增長 自增id 實現

首先創建一個自動增長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 }

注:因為findAndModify是一個方法完成更新查找兩個操作,所以具有原子性,多線程不會沖突。

然后保存相應的數據

>db.user .save({uid:userid.id, username:"dotcoo", password:"dotcoo", info:"http://www.dotcoo.com/ "});

// --------- update 2011-03-27 13:11 ------------------------

其實上邊兩行可以寫為一步

>db.user .save({uid: db.ids .findAndModify({update:{$inc:{'id':1}},query:{"name":"user"},new:true}).id, //讓db.ids集合中的name="user"文檔的id值加1并返回充當自增idusername: "dotcoo",password:"dotcoo",info:"http://www.dotcoo.com/ "});

// --------- update 2011-03-27 13:11 ------------------------

查看結果

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

這是mongo的shell,如果用的是服務器端程序java php python,可以自己對這些操作封裝一下,只用傳幾個參數就可以返回自增的id,還可以實現像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://www.dotcoo.com/ ')); $conn->close(); ?>

其具體實現方式主要是利用MongoDB中findAndModify命令,只要每次往MongoDB里insert對象前生成ID賦值給_id就OK了,因為它的實現滿足原子性,所以不存在并發問題。

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

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

原文鏈接:http://www.dotcoo.com/post-39.html

也可參考:http://huoding.com/2011/02/09/47

http://shiflett.org/blog/2010/jul/auto-increment-with-mongodb

來源:http://blog.csdn.net/cyuyan112233/article/details/19769291

總結

以上是生活随笔為你收集整理的Mongodb 自动增长 自增id 实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人综合视频 | 亚洲天堂三级 | 免费成人美女在线观看 | 日韩一级在线视频 | 很黄很黄的网站 | 人人干人人看 | 久久久久国产一区二区三区潘金莲 | 色网在线免费观看 | 日美韩一区二区三区 | 亚洲欧美高清 | 成人福利网址 | 欧美成人免费在线视频 | 琪琪久久 | 欧美黑人做爰爽爽爽 | 欧洲最强rapper网站直播 | 国产一区二区三区高清 | 波多野吉衣一二三区乱码 | 色婷婷麻豆 | 久久久久久国产视频 | 性一交一乱一精一晶 | av色欲无码人妻中文字幕 | 抱着老师的嫩臀猛然挺进视频 | 爱草在线 | 久久欧美视频 | 性五月天 | 夜夜操影视 | 春色导航 | 久久精品国产一区 | 久热免费在线视频 | 成年人黄色在线观看 | 婷婷精品一区二区三区 | 黄色毛毛片 | 久久久青 | 亚洲人成高清 | 国产三区在线播放 | 亚洲v天堂 | 国产精品成人久久久 | 一区二区三区视频网站 | 欧美日韩在线视频一区 | 色窝窝无码一区二区三区成人网站 | 伊人久久青草 | 天降女子 | 天天谢天天干 | 精品国偷自产一区二区三区 | 日韩在线网址 | 加勒比视频在线观看 | 五月婷婷社区 | 制服诱惑一区二区 | 成人午夜免费电影 | 91九色国产视频 | 国产精品污污 | 欧美成人免费大片 | 在线观看国产精品入口男同 | 看全色黄大色黄大片大学生 | 嫩草私人影院 | 熟女少妇一区二区 | 蜜桃在线一区二区三区 | 扶她futa粗大做到怀孕 | 97日韩精品 | 毛片a| 成人另类小说 | 日韩中文字幕亚洲精品欧美 | 一级一级黄色片 | 天天射天天干天天色 | 精品少妇一区二区三区在线观看 | 欧美日韩在线直播 | 色噜噜狠狠狠综合曰曰曰88av | 福利在线视频导航 | 亚洲欧美经典 | 高清国产一区二区三区四区五区 | 日本男女网站 | 91性高潮久久久久久久久 | 在线视频福利 | 成人动漫免费在线观看 | 欧美性爱精品一区 | 亚洲一级精品 | 国内毛片毛片毛片毛片 | 国产麻豆午夜三级精品 | 20日本xxxxxxxxx46| 精品人人人 | 欧美性猛交久久久久 | 老牛影视av老牛影视av | 欧美日韩生活片 | 男插女视频免费 | 中文在线观看高清视频 | 香蕉亚洲 | 免费的理伦片在线播放 | 波波野结衣| 韩国甜性涩爱 | 日韩欧美久久久 | 午夜插插插 | 亚洲综合在线播放 | 欧美精品乱人伦久久久久久 | 色噜噜一区二区三区 | 欧美性大战久久久久久久 | 精品中文字幕一区 | 亚洲第一综合网 | 一区视频在线 | 亚洲午夜福利一区二区三区 |