一、 關係型資料庫(sql) 1.建表 二、非關係型資料庫(nosql 98提出的概念) 1.不用建庫建表數據直接存入就可 優缺點: 關係型:節約資源(學生姓名和課程名不重覆出現),開發不方便(需先建庫建表,外鍵等) 非關係型:浪費資源(學生姓名和課程名重覆出現),開發方便(不需要建庫建表,數據直接 ...
一、 關係型資料庫(sql)
1.建表
二、非關係型資料庫(nosql 98提出的概念)
1.不用建庫建表數據直接存入就可
優缺點:
關係型:節約資源(學生姓名和課程名不重覆出現),開發不方便(需先建庫建表,外鍵等)
非關係型:浪費資源(學生姓名和課程名重覆出現),開發方便(不需要建庫建表,數據直接存)
開發常用關係型,爬蟲常用非關係型
三、Ubuntu安裝: sudo apt-get install mongodb
Centos安裝:sudo yum install mongodb
四、mongodb基本操作:
1.啟動:sudo service mongodb start
2.停止:sudo service mongodb stop
3.重啟:sudo service mongodb restart
4.進入客戶端:mongo
出現上圖代表正確進入
5.退出客戶端:exit、ctrl + c
6.預設埠:27017
7.預設配置文件位置:/etc/mongod.conf
8.預設日誌位置:/var/log/mongodb/mongod.log
9.查看幫助命令:mongod -help (或進入mongo直接 help)
10.關於database的基本命令:
a.查看所有的庫:show database、 show databases、show dbs
b.使用一個庫:use 庫名
c.查看當前庫名:db
d.切換資料庫:use 庫名
e.刪除當前資料庫:db.dropDatabase()
f.第一次向資料庫中加入數據時,資料庫自動創建。
11.關於集合的基本命令:
a.不用手動創建集合,向不存在的集合第一次加入數據時,集合會自動創建出來
如圖集合會自動創建
b.手動創建集合:
db.createCollection('stu')
db.createCollection(name, options)
db.createCollection('stu', {capped:true, size:10})
參數capped:預設為false表示不設置上限,當值為true表示設置上限,參數size當capped為true時,需要指定此參數,表示上限大小,單位為位元組,如果數據超過上限,會將之前的數據覆蓋。
c.查看集合:show collections
d.刪除集合:db.集合名.drop()
12.數據類型:
ObjectId:文檔id
String 字元串,必須是有效的utf-8
Boolean 存儲一個布爾值 true false
Integer 整數 32位或64位取決於伺服器
Double 浮點型
Arrays 數組,列表,多個值存儲到一個鍵
Object 一個值就是一個文檔
Null 存儲Null值
Timestamp 時間戳,表示從1970.1.1到現在的總秒數
Date 存儲當前的日期或時間
ObjectId 是一個12位元組的十六進位數,前四個位元組是當前的時間戳,接下來三個位元組是機器的id,接下來的兩個位元組是mongodb的服務進程id最後三個位元組是簡單增量值
13.數據插入:
db.集合名.insert(數據)
db 指的是本資料庫
集合名 相當於mysql中的表 例:
14.保存:
db.集合名.save(數據)
如果_id不存在,則添加數據,如果_id存在,則修改數據
例:
15.簡單查詢:
db.集合名.find() 例:
16.複雜查詢:
比較運算符(等於(預設)、小於($lt)、小於等於($lte)、大於($gt)、大於等於($gte)、不等於($ne))
例:
邏輯運算符:
and:直接寫多個條件
or:使用 $or,值為一個數組,數組中每個元素為json
組合使用
$in 範圍之內
$nin 不在範圍之內
17.排序:
db.集合名.find().sort({欄位:1}) 參數1位升序,-1位降序
升序 db.stu1.find().sort({math:1})
降序 db.stu1.find().sort({math:-1})
18.統計個數
方法count()用於統計結果集中文檔條數
db.集合名.find().count()
db.集合名.count({條件})
19.消除重覆
方法distinct()對數據進行去重
db.集合名.distinct('去重欄位',{條件})
例:
20.更新
db.集合名.update(<qurey>, <update>, {multi:<boolean>})
參數query:查詢條件
參數update:更新操作符
參數multi:可選,預設值false,表示只更新找到的第一條記錄;值為true,表示把滿足條件的條件全部更新
可見這樣更新有問題,應該這樣:
發現這樣只會更新一條,若更新全部應:
21.刪除
db.集合名.remove(<query>, {justOne:<boolean>})
參數query:可選,刪除文檔條件
參數justOne:可選,預設為false,表示刪除多條;如果設置為true或1,則只刪除一條
22.查詢結果處理
查詢結果格式化:
db.集合名.find(條件).pretty()
db.集合名.findOne(條件):只返回第一個結果
指定文檔數量
方法limit() 用於讀取指定數量的文檔
db.集合名.find().limit(number)
方法skip() 用於跳過指定數量的文檔
db.集合名.find().skip(number)
23.投影
在查詢的返回結果中,只選擇必要欄位
db.集合名.find({}, {欄位名1:1,欄位名2:1})
參數為欄位名,值1表示顯示,值為0表示不顯示
特殊:對於_id列預設是顯示的,如果不顯示需要明確設置為0