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的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一律念無疑是一種全新的思惟的注入。linux

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

1、安裝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就是咱們剛纔建立的路徑。(別關閉)vim

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

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

dbpath=/data/mongoData/bash

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便可查看咱們的版本號。下載對應正確的版本。

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

  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"})

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

  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(分頁單位)。

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

相關文章
相關標籤/搜索