MongoDB簡單使用
在啟用mongodb服務的時候,會有三個警告:
第一個警告: Linux內存動態分配,mongo占用內存較大,官方推薦關閉動態分配所以警告
第二個警告: 默認分配給mongo的進程和文件數量限制過低,需要重新分配
第三個警告: 我們用root權限啟動mongo,數據不安全.用--auth來創建用戶,來認證
簡介:
1.類似json格式, 鍵值對形式,每一條叫文檔, 2.不用事前創建數據庫,給數據就會自動創建 3.mongoDB必須是utf-8
啟動mongo命令:
1.sudo mongod 是啟用服務的命令
2.# 啟動mongod,並指定數據存儲目錄(目錄必須存在,且有讀寫權限)
sudo mongod --dbpath=/xxxxx/xxxx
3.使用守護進程方式啟動,用--fork,就必須啟動logpath
sudo mongod--logpath=/data/db/mongodb.log --fork
4.使用用戶認證方式啟動
sudo mongod --auth
進入shell
命令:mongo---use admin---db.createUser({user: ‘python‘, pwd:‘python‘, roles: [‘root‘]})
登錄db.auth(‘python‘,‘python‘)
換個用戶名,可以設置權限roles:[{role: "read", db: ‘‘test‘}]
各個數據庫的默認端口拓展
MongoDB端口27017
redis端口 6379
mysql端口 3306
mongo進入客戶端
7. 查看當前數據庫下所有的用戶信息.
> db.system.users.find()
show collections
13. 刪除bigcat用戶
> db.dropUser("bigcat")
MongoDB的服務器統計,需要在MongoDB客戶端鍵入命令db.stats()
查看當前數據庫名
db
查看所有數據庫名
show dbs
切換數據庫,沒有暫時不創建,插入數據時數據庫才被創建
use 數據庫名
刪除數據庫
db.dropDatabase()
集合命令
db.createCollection(name)--->向不存在的集合第一次添加數據時,集合也被創建
>db.createCollection("stu", {capped : true, size :6142800} )
----參數capped:默認值為false表示不設置上限,值為true表示設置上限
----參數size:當capped值為true時,需要指定此參數,表示上限大小,當文檔達到上限時,會將之前的數據覆蓋,單位為字節
語法 :
查看當前數據庫的集合
show collections
刪除集合命令
db.stu.drop()
插入
db.集合名.insert({})
insert添加相同_id的數據, 就會出錯
db.集合名.save({})
save = insert + update
語法與insert 相同,相同_id就會修改
修改/添加:
db.stu.update({修改條件},{修改後的內容})默認修改匹配到的第一條文檔全部數據
update({修改條件},{$set:{age:30}})只修改文檔age為30,其他字段不變,默認修改第一個匹配到的文檔
db.stu.update({},{$set: {age = 100}})修改所有文檔中的age為100,默認修改第一個匹配到的文
匹配所有文檔的:
db.stu.update({},{$set: {age = 100}},{multi:true}) 紅色的參數就是讓匹配所有文檔
查詢:
db.stu.find() 查詢所有符合匹配條件的文檔
db.stu.findOne() 查詢第一個符合匹配的文檔
db.stu.find({age: 18}).pretty()格式化輸出
比較運算符
大於小於,大於等於,小於等於,默認是等於
db.stu.find({age: {$lt : 18}}) 小於18 邏輯運算符 默認是and,表示兩個都滿足 db.stu.find({age:18, gender: false}) or表示滿足任何一個條件即可,每一個條件都要是單獨字典 db.stu.find({$or: [{age:{$lt: 25}}, {gender: False}]}) or 和 and 配合使用 db.stu.find({age: {$in : [16, 18,20]}}) 支持正則 db.stu.find({name: /段/}) 斜杠裏就是正則 db.stu.find({name : {$regex: ‘黃‘, $options: :"$i"}}) 忽略大小寫修飾符 $options: :"$i" 自定義查詢: db.stu.find($where : function(){return this.age < 20}) db.stu.find().limit(3)顯示前三個 skip(2)跳過前兩個 可以組合使用, 投影 表明顯示哪些數據 db.stu.find({}, {name: 1})1,true表示顯示,0,false表示不顯示,_id是默認顯示的 排序 find().sort({age: 1}) 1是升序,-1是降序 統計個數 db.stu.find({條件}).count() 也可以 db.stu.count({條件}) 消除重復 db.stu.distinct(‘age‘, {}) 只會返回‘age‘的字段,{}查詢的條件,返回值是列表
各個參數
"db":"test",表示當前是針對"test"這個數據庫的描述。想要查看其他數據庫,可以先運行$ use datbasename
"collections":3,表示當前數據庫有多少個collections.可以通過運行show collections查看當前數據庫具體有哪些collection.
"objects":267,表示當前數據庫所有collection總共有多少行數據。顯示的數據是一個估計值,並不是非常精確。
"avgObjSize":623.2322097378277,表示每行數據是大小,也是估計值,單位是bytes
"dataSize":16640,表示當前數據庫所有數據的總大小,不是指占有磁盤大小。單位是bytes
"storageSize":110592,表示當前數據庫占有磁盤大小,單位是bytes,因為mongodb有預分配空間機制,為了防止當有大量數據插入時對磁盤的壓力,因此會事先多分配磁盤空間。
"numExtents":0,沒有什麽真實意義
"indexes":2,表示system.indexes表數據行數。
"indexSize":53248,表示索引占有磁盤大小。單位是bytes
"ok":1,表示服務器正常
SQL和MongoDB對比
SQL術語/概念 |
MongoDB術語/概念 |
解釋/說明 |
database |
database |
數據庫 |
table |
collection |
數據庫表/集合 |
row |
document |
數據記錄行/文檔 |
column |
field |
數據屬性/字段(域) |
index |
index |
索引 |
primary key |
primary key |
主鍵,MongoDB默認自動將_id字段設置為主鍵,可以手動設置 |
以上是總結
MongoDB簡單使用