java架構之路-(NoSql專題)MongoDB快速上手

  NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。在現代的計算系統上每天網絡上都會產生龐大的數據量。這些數據有很大一部分是由關係數據庫管理系統(RDBMS)來處理。 1970年 E.F.Codd's提出的關係模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程序編程更加簡單。通過應用實踐證明,關係模型是非常適合於客戶服務器編程,遠遠超出預期的利益,今天它是結構化數據存儲在網絡和商務應用的主導技術。NoSQL 是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一概念無疑是一種全新的思維的注入。

  這次我們來說一下我們的MongoDB,MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。

一、安裝

  1>下載,地址輸入https://www.mongodb.com/download-center/community,選擇社區版本即可。到Linux客戶端下輸入$ wget https://fastdl.mongodb.org/linux/mongodb-linux-s390x-rhel72-4.2.1.tgz

  2>解壓,輸入$ tar -zxvf mongodb-linux-s390x-rhel72-4.2.1.tgz,創建一個一個數據庫的物理文件存儲路徑,我一般定義爲/data/mongoData;$ mkdir -p /data/mongoData。

  3>啓動測試,在安裝路徑下輸入 $ ./bin/mongod --dbpath=/data/mongoData/即可,--dbpath就是我們剛纔創建的路徑。(別關閉)

  4>再打開一個客戶端,輸入$ ./bin/mongo --host=127.0.0.1 --port=27017。進入到我們的客戶端。輸入db version();即可查看到我們的版本信息。安裝成功。

  5>貌似一直開着客戶端不太好用,我們寫一個配置文件。創建一個conf目錄。輸入 $ vim conf/mongodb.conf 添加 如下內容

dbpath=/data/mongoData/

logpath=/data/mongoLogs/mongo.log

port=27017

  重啓啓動我們的MongoDB $ ./bin/mongod -f /conf/mongodb.conf & 即可(記得把目錄提前創建好,不然啓動報錯的)

常見參數詳解

dbpath 數據庫目錄,默認/data/db

bind_ip 監聽IP地址,默認全部可以訪問

port 監聽的端口,默認27017

logpath 日誌路徑

logappend 是否追加日誌

auth 是開啓用戶密碼登陸

fork 是否已後臺啓動的方式登陸

config 指定配置文件

  注意:在下載安裝包成功以後,啓動時可能會出現,-bash: ./bin/mongod: cannot execute binary file錯誤信息。這個是版本不對應問題,可能是64位系統下載了32位的安裝包,或者你32位的系統安裝了64位的安裝包,我們輸入$ getconf LONG_BIT即可查看我們的版本號。下載對應正確的版本。

二、簡單使用(基礎和插入)

  1.查看所有庫,show databases;或者show dbs;

  2.選擇庫,use 庫名;如果沒有該庫,則創建該庫,輸入db;查看所在數據庫。

  3.查看該庫下的所有表,show tables。或者show collections;

  4.創建與插入,我們輸入 $ db.表名.insert({"屬性":"值"}),如果沒有則創建該表,存在則添加數據。例如db.student.insert({name:"張三",age:12})。

  五種數據類型展示db.student.insert({name:"小菜技術",age:18,souce:99.9,sex:true,createDate:Date()})。字符串,整型,浮點型,布爾型,時間類型

  5.查看錶 db.表名.find();例如我們$  db.student.find(); 簡單條件查詢db.student.find({age:18})即可

  6.表刪除,db.表名.drop(),例如 db.classInfo.drop()。db.dropDatabase()是刪除當前數據庫。

  7.多條插入,db.表名.insertMany([data1,data2])例如db.stu.insertMany([{name:"趙武"},{age:11}]);用insert後面加一個數組也是可以的。

  這裏再說一下我們的插入,我們會看到每次我們並沒有指定我們的id,每次MongoDB會幫我自動生成一個id,這時我們的數據可以重複插入的,我們只需要每次指定id,就不會造成數據的重複了,例如db.stu.insert({_id:001,name:"xxxx"})

二、簡單使用(基礎查詢)

  1.where name="王武" and age=12,這個到我們的MongoDB裏就是這樣的db.stu.find({name:'王武',age:12})即可。

  2.範圍查詢>,<,>=,<=,分別對應的是$gt,$lt,$gte,$lte,例如db.stu.find({age:{$gte:12}}),就是要查詢年齡字段大於等於12的值。

  3.where age in (12,99,100),這個到我們的MongoDB裏就是這樣的db.stu.find( { age : {美元符號in : [ 12 , 99 , 100 ] } } )即可。注意$all是並且的意思,現在我覺得沒啥用,用法和in一樣的,意思是既等於這個也等於那個。注意一下自己刪下空格啊,瀏覽器被這個玩意xxs注入了 $

  4.where  name="王武" or age=12,到我們的MongoDB裏就是這樣的db.stu.find({$or:[{name:"王武"},{age:11}]}),注意括號。我們sql的and也可以寫成db.stu.find({$and:[{name:"王武"},{age:99}]})這樣的。

  5.where name='趙武' or (name="王武" and age=12),就寫成db.stu.find({$or:[{name:"趙武"},{$and:[{name:"王武"},{age:12}]}]})。自己縷縷順序就好了,也不難。

  6.排序,db.stu.find().sort({age:-1}),意思就是按照查找所有,然後按照年齡降序排列,1升序,-1降序。多個排序字段,逗號分隔,例如db.stu.find().sort({age:-1})

  7.分頁,db.stu.find().skip(3*0).limit(3),意思是每頁三條記錄,我們要查看第一頁的數據,skip(分頁單位*(當前頁-1))。limit(分頁單位)。

最進弄了一個公衆號,小菜技術,歡迎大家的加入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章