多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > 初學MongoDB實踐筆記――安裝、創建數據庫、保存及查詢數據

初學MongoDB實踐筆記――安裝、創建數據庫、保存及查詢數據

來源:程序員人生   發布時間:2015-01-04 09:36:07 閱讀次數:2980次

        MongoDB是1個可擴大、高性能的散布式文檔存儲數據庫,由C 語言編寫,旨在為web利用提供可擴大的高性能數據存儲解決方案。它的特點是高性能、易部署、易使用,存儲數據非常方便。

        Mongo DB 是目前在IT行業非常流行的1種非關系型數據庫(NoSql),其靈活的數據存儲方式備受當前IT從業人員的青睞。Mongo DB很好的實現了面向對象的思想(OO思想),在Mongo DB中每條記錄都是1個Document對象。Mongo DB最大的優勢在于所有的數據持久操作都無需開發人員手動編寫SQL語句,直接調用方法就能夠輕松的實現CRUD操作。

        文檔數據庫介紹:

        MongoDB數據庫中1條記錄是1個文檔,他的數據結構由(field)和值(value)成對的組成。MongoDB文檔類似于JSON對象。字段(域)的值可以包括其他文檔、數組和文檔數組。

        以下圖所示MongoDB文檔結構:

               

        使用文檔數據庫的優勢以下:

        在許多程序設計語言中,文檔(即對象)合適原生數據類型;

        嵌入式文檔和數組減少昂貴的關系型關聯需要;

        動態數據結構模式支持流暢的可擴大多態性。

安裝

        官方網站:http://www.mongodb.org/downloads,下載Windows 64bit地址。

        MongoDB在Windows 7上的安裝運行很方便。直接下載、解壓,然后運行bin/mongod 便可啟動服務器,運行bin/mongo 便可運行命令行客戶端。

        我是使用默許安裝到C盤Program FilesMongoDB 2.6 Standard目錄下,為了方便學習,將其拷貝到C盤根目錄下,為C:MongoDB。

        注意:請最好不要安裝到C盤Program Files目錄下,而且安裝目錄不要包括空格,否則,將麻煩些,也就是命令行參數每一個參數要用“”括起來,例如:

        repeat    "I am hungry"    now

        命令會把字符串"I am hungry"分配給argv[1],把字符串"now"分配給argv[2]。


        在啟動MongoDB之前,我們必須新建1個寄存mongoDB數據和日志的目錄。數據庫目錄:C:MongoDBdatadb,日志目錄:C:MongoDBdata。


啟動服務

        打開CMD窗口,進入到C:MongoDBin目錄下,運行服務端mongod.exe。

        C:MongoDBin>mongod.exe --dbpath=C:MongoDBdatadb --directoryperdb --logpath=C:MongoDBdatalogs --logappend


        注:如果服務未啟動成功,主要是兩個緣由,1是未建datadb目錄;和防火墻不允許開放服務所需端口。


        運行客戶端

        再打開1個CMD窗口,進入到C:MongoDBin目錄下,運行客戶端mongo.exe來登錄MongoDB。(要保持服務端mongod.exe的窗口不關閉)


Java開發數據庫驅動

        驅動Jar包鏈接地址,驅動ZIP包鏈接地址。https://github.com/mongodb/mongo-java-driver/releases


在客戶端練習

        刪除用戶:db.dropUser('username')

        創建OA數據庫:use OA

        注:如果不做其他操作,則OA數據庫是不會被創建的。

        創建collections:OA.createCollection("mytest");

        查看數據庫

        > show dbs
        OA     0.078GB
        admin  0.078GB
        db     (empty)
        local  0.078GB
        test   (empty)

        查看Collection(相當于“表”):

        > show collections


        創建文檔數據數據表,并插入數據記錄。

        > use OA

        switched to db OA

        > db.createCollection("doctest")

        { "ok" : 1 }

        > db.doctest.save({id:1,name:'ttest1'});

        WriteResult({ "nInserted" : 1 })

        > db.doctest.save({id:2,name:'ttest1',code:'102'});

        WriteResult({ "nInserted" : 1 })

        > db.doctest.save({id:3,name:'ttest3',code:'103',class:'doc'});

        WriteResult({ "nInserted" : 1 })

        > db.doctest.save({id:4,name:'ttest4',code:'104'});

        WriteResult({ "nInserted" : 1 })


        查詢

        查詢數據數量(count)

        > db.doctest.find().count();

        4

        條件(=)查詢,條件為:name="ttest1"。

        > db.doctest.find({"name":"ttest1"});

        { "_id" : ObjectId("54a1003556a081db9d632745"), "id" : 1, "name" : "ttest1" }

        { "_id" : ObjectId("54a1005756a081db9d632746"), "id" : 2, "name" : "ttest1", "code" : "102" }

        條件(>=)查詢,條件為:id>3。

        > db.doctest.find({id:{$gt:3}});

        { "_id" : ObjectId("54a100a056a081db9d632748"), "id" : 4, "name" : "ttest4", "code" : "104" }

        > db.doctest.find({id:{$gte:3}});

        { "_id" : ObjectId("54a1008c56a081db9d632747"), "id" : 3, "name" : "ttest3", "code" : "103", "class" : "doc" }

        { "_id" : ObjectId("54a100a056a081db9d632748"), "id" : 4, "name" : "ttest4", "code" : "104" }

        條件(in)查詢,條件為:id in (2,3)。

        > db.doctest.find({id:{$in:[2,3]}});

        說明:$gt : >               --(Greater than 的首字母)

                    $gte : >=           --(Greater than or equal 的首字母)

                    $lt :<                  --(Less than 的首字母)

                    $lte :<=             --(Less than  or equal  的首字母)

                    $ne : !=             --(Not equal  的首字母)


        推薦客戶端工具

        1. MongoVUE ,http://blog.mongovue.com/ 


數據庫設計

        MongoDB 無固定結構,每張表每段數據可以有不同的結構,這既是好處也是缺點,缺點在于你必須很了解MongoDB的表結構,這其實給保護人員帶來1定的不適應和麻煩。

        此問題也很容易解決,就是增加表結構定義表,用于說明各種情況下的結構定義,例如可配置審批單,就是比較適用。

        嵌套式設計,例如審批單帶有明細項目,其中,明細項目是多行數據內容,則操作以下:

        >db.doctest.save({id:5,name:'ttest5',code:'106',detail:[{item:'測試卡1',type:'Card',acount:3},{item:'測試卡2',type:'Card',acount:5}]});

        查詢其中型號(Type)是“Mobile”的記錄,在操作以下:

        > db.doctest.find({"detail.type":"Mobile"});
        { "_id" : ObjectId("54a39ebdd8389293ac59e78a"), "id" : 6, "name" : "ttest6", "code" : "107", "detail" : [ { "item" : "員工卡1", "type" : "Card", "acount" : 3 }, { "item" : "測試手機", "type" : "Mobile", "acount" : 5 } ] }

        查看審批單的設計:

> db.doctest.find();



查詢內嵌文檔

        查詢文檔有兩種方式,1種是完全匹查詢,另外一種是針對鍵值對查詢!內嵌文檔的完全匹配查詢和數組的完全匹配查詢1樣,內嵌文檔內鍵值對的數量,順序都必須1致才會匹配,以下例:

    

        針對內嵌文檔特定鍵值對的查詢是最經常使用的!通過點表示法來精確表示內嵌文檔的鍵。


參考:Introduction to MongoDB

           學習MongoDB--(4⑵):MongoDB查詢(數組、內嵌文檔和$where)

           mongodb的查詢語句學習摘要

           百度百科MongoDB

           大數據廠商同盟 MongoDB

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产视频每日更新 | 看看免费a一片欧 | 一级特黄特色aa大片 | 中文在线免费看视频 | 国产第4页 | www日本高清视频 | 91日韩| 亚洲精品视频区 | 日本wwwcom| 欧美综合自拍亚洲综合百度 | 精品毛片视频 | 日韩国产欧美在线观看 | 大香人蕉免费视频75 | 国产高清在线视频一区二区三区 | 欧美日韩一区二区在线视频播放 | 欧美一区二区三区四区五区六区 | 五月天在线播放视频在线 | 亚洲国产欧美日韩 | 男人边吃奶边摸下面好爽视频 | 亚洲网站免费看 | 欧美另类 videos黑人极品 | 国产偷v国产偷v亚洲高清 | 欧美日本综合 | 亚洲 欧美 国产 中文 | 目韩一区二区三区系列片丶 | 国产成人精品免费视频大全五级 | 91精品免费久久久久久久久 | www.黄网站| 加勒比精品久久一区二区三区 | 久久福利网 | 日本不卡高清中文字幕免费 | 一区二区中文字幕亚洲精品 | 亚欧国产 | 伊人2222 | 国产一国产一区秋霞在线观看 | 看片亚洲 | 亚洲国产日韩欧美在线vip1区 | 欧美一级黄色片免费看 | 亚洲乱码专区一区二区三区 | yy6080私人啪啪 | 日本欧美不卡一区二区三区在线 |