1. 程式人生 > >MongoDB簡單使用

MongoDB簡單使用

man column 組合 field group t權限 dmi 插入數據 重復

在啟用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}})只修改文檔age30,其他字段不變,默認修改第一個匹配到的文檔

db.stu.update({},{$set: {age = 100}})修改所有文檔中的age100,默認修改第一個匹配到的文

匹配所有文檔的:

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簡單使用