MongoDB基礎的操作(1)
阿新 • • 發佈:2018-12-23
MongoDB基礎的操作
sql與mongodb的區別
SQL術語 | MongoDB | 解釋 |
---|---|---|
database | database | 資料庫 |
table | collection | 資料庫表/集合 |
row | document | 資料記錄行/文件 |
column | field | 資料欄位/域 |
建立資料庫
use dbname#從這裡開始下文中所有的dbname都是自己新建的資料庫的名稱
如果存在dbname,則會自動選擇dbname資料庫,如果不存在則會建立dbname資料庫。
建立完畢資料庫之後可以通過
db #檢視當前選擇的資料庫
show dbs #檢視所有的資料庫
如果資料庫中沒有資料那麼show dbs無法顯示新建立的資料庫名稱。
刪除資料庫
db.dropDatabase()
建立集合
db.creatCollection("ccname") #ccname同dbname一樣為自己剪的集合
db.creatCollection("ccname",{capped:true,autoIndexID:true,size:10000,max:10000})
欄位 | 型別 | 描述 |
---|---|---|
capped | 布林 | 固定集合的大小,如果值為true時必須也指定size |
autoindexid | 布林 | 如果為true,自動建立_id欄位索引 |
size | 數值 | 設定集合的大小 |
max | 數值 | 指定固定集合中包含文件的最大數量 |
其實在 MongoDB 中,你不需要建立集合。當你插入一些文件時,MongoDB 會自動建立集合。
刪除集合
db.ccname.drop()
文件的增刪改查
增
db.ccname.insert({'name':'李華','age':18})
或者你可以定義一個變數
abc = ({'name':'李華','age':18})
db.ccname.insert(abc)
刪
db.collection .remove(
<query>, #刪除的文件的條件。
{
justOne: <boolean>, #如果設為 true 或 1,則只刪除一個文件。
writeConcern: <document> #丟擲異常的級別。
}
)
db.ccname.remove({'name':'李華'})#刪除所有name=李華的文件
db.ccname.remove({'name':'李華'},{justOne:1})#刪除一條name=李華的文件
改
db.collection.update(
<query>, #相當於sql語句的where
<update>, #相當於sql語句的set
{
upsert: <boolean>, #可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
multi: <boolean>, #可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。
writeConcern: <document> #可選,丟擲異常的級別。
}
)
修改name=李華的文件,修改為age=20,sex=男
db.ccname.update({'name':'李華'},{$set:{'age':20,'sex':'男'})
以上方法只會修改第一條符合條件的文件,如果想修改多條可以如下
db.ccname.update({'name':'李華'},{$set:{'age':20,'sex':'男'},{multi:true})
查
查詢集合中所有文件
db.ccname.find()
按照條件查詢+and條件
db.ccname.find({"name":"李華","age":20}).pretty()
# 相當於select * from ccname where name="李華" and age=20;
其中pretty可以時輸出的資料更容易檢視
查詢中的or條件
db.ccname.find({$or:[{"name":"李華"},{"age":15}]})
#相當於select * from ccname where name="李華" or age=15;
and和or連用:
db.ccname.find({"name":"李華",$or:["age"=20,"age"=15]})
#相當於select * from ccname where name="李華" and (age=20 or age=15);