漲姿勢
1.MySQL與Mongo中的一些概念對比:
SQL術(shù)語/概念 MongoDB術(shù)語/概念 解釋/說明
database database 數(shù)據(jù)庫
table collection 數(shù)據(jù)庫表/集合
row document 數(shù)據(jù)記錄行/文檔
column field 數(shù)據(jù)字段(列)/域
index index 索引
table joins 表連接,MongoDB不支持
primary key primary key 主鍵,MongoDB自動將_id字段設置為主鍵
基本語法規(guī)則
1.DDL語法(操作數(shù)據(jù)庫及表的結(jié)構(gòu))
----++----對數(shù)據(jù)庫的操作----++----
1.1 查看所有數(shù)據(jù)庫
show dbs #查看所有數(shù)據(jù)庫
db #查看當前數(shù)據(jù)庫
1.2 創(chuàng)建及使用數(shù)據(jù)庫:
#若沒有此數(shù)據(jù)庫則創(chuàng)建
use tbl
1.3刪除數(shù)據(jù)庫
#刪除當前數(shù)據(jù)庫
db.dropDatabases()
----++----對集合結(jié)構(gòu)(MySQL中的表)的操作----++----
1.4 創(chuàng)建集合
db.createCollection(name棕叫,options)
db.createCollection("mycol", {capped : true, autoIndexId : true, size : 6142800, max : 10000 })
e.g. db.createCollection("mycollection")
options參數(shù)是可選的贴妻,因此只需要指定集合的名稱。 以下是可以使用的選項列表:
字段 類型 描述
capped Boolean(可選) 如果為true,則啟用封閉的集合。上限集合是固定大小的集合,它在達到其最大大小時自動覆蓋其最舊的條目。 如果指定true师痕,則還需要指定size參數(shù)。
autoIndexId Boolean (可選) 如果為true而账,則在_id字段上自動創(chuàng)建索引。默認值為false因篇。
size 數(shù)字 (可選) 指定上限集合的最大大小(以字節(jié)為單位)泞辐。 如果capped為true,那么還需要指定此字段的值竞滓。
max 數(shù)字 (可選) 指定上限集合中允許的最大文檔數(shù)咐吼。
在插入文檔時,MongoDB首先檢查上限集合capped字段的大小商佑,然后檢查max字段锯茄。
1.5 查看數(shù)據(jù)庫中的所有集合
show collections
或
show tables
1.6 查看集合的結(jié)構(gòu)
db.mycol1.find()
1.7 刪除集合
db.mycol1.drop()
修改集合:
mongoDB沒有表的概念,都是一個個集合茶没,所以這里只說一個修改集合的鍵值的方法肌幽。
1.8 修改集合之修改鍵值(MySQL中對應為字段名)
db.mycol1.update({}, {$rename:{"舊鍵名稱":"新鍵名稱"}}, false, true)
第一個false表示:可選,這個參數(shù)的意思是抓半,如果不存在update的記錄喂急,true為插入新的記錄,默認是false笛求,不插入廊移。
第二個true表示:可選,mongodb 默認是false,只更新找到的第一條記錄探入,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新狡孔。
2.DDL語法(數(shù)據(jù)操作)
2.1 增
法一:
db.mycol1.insert({
name:'zhangsan',
age:23,
phone:1877768121
})
法二:
document = ({
name:'lisi',
age:19,
phone:15633577595
});
db.mycol1.insert(document)
2.2 改
2.2.1 update()方法
db.collection.update(criteria,objNew,upsert,multi)
參數(shù)說明:
query:用于設置查詢條件的對象,可以理解為sql查詢中的where后面的
update:用于設置更新內(nèi)容的對象蜂嗽,也可以理解為sql update查詢內(nèi)set后面的
upsert:如果記錄不存在是否新增一個記錄苗膝,默認false
multi:如果有多個符合條件的記錄,是否全部更新植旧,默認為false
writeConcern :可選荚醒,拋出異常的級別。
db.mycol1.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
e.g.
#將用戶名稱為"zhangsan"用戶的年齡更改為18隆嗅。
db.col_1.update({name:'zhangsan'},{$set:{age:18}})
#后面默認為false,false,這兩個組合可以分出很多情況界阁。
2.2.1 save()方法
save()方法為替換原有文檔
db.mycol1.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
2.3 刪
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
以下為實例:
#刪除所有的文檔
db.mycol1.remove({})
#移除集合中查詢到的數(shù)據(jù)的第一條,后面設成1或者true,表示只刪除一個文檔。
db.mycol1.romve({name:'zhangsan'},1)
3.DQL語法(數(shù)據(jù)查詢)
3.1 基礎(chǔ)語法:
MongoDB 查詢數(shù)據(jù)的語法格式如下:
db.collection.find(query, projection)
query :可選胖喳,使用查詢操作符指定查詢條件
projection :可選泡躯,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認省略)较剃。
如果你需要以易讀的方式來讀取數(shù)據(jù)咕别,可以使用 pretty() 方法,語法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式來顯示所有文檔写穴。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
db.mycol1.find() #查詢所有文檔
db.mycol1.findOne() #查詢第一個文檔
db.mycol1.find().pretty() #查詢所有文檔并格式化輸出
db.mycol1.find().count() #查詢到的文檔的數(shù)目
db.mycol1.find().skip() #跳過指定數(shù)量的數(shù)據(jù)
db.mycol1.find().limit() #顯示文檔數(shù)
e.g.讀取十條數(shù)據(jù)后的100條記錄
db.mycol1.find().skip(10).limit(100)
3.2 查詢+where語句
如果你想獲取"col"集合中 "likes" 大于100惰拱,小于 200 的數(shù)據(jù),你可以使用以下命令:
db.mycol1.find({likes : {$lt :200, $gt : 100}})
// 類似于SQL語句:
Select * from mycol1 where likes>100 AND likes<200;
條件操作符 中文 全英文
$gt 大于 greater than
$gte 大于等于 greater than equal
$lt 小于 less than
$lte 小于等于 less than equal
$ne 不等于 not equal
3.3 AND條件
find() 方法可以傳入多個鍵(key)啊送,每個鍵(key)以逗號隔開偿短,語法格式如下:
db.col_1.find({name:'zhangsan',age:18}).pretty()
3.4 OR 條件
db.col_1.find({$or:[{name:'zhangsan'},{age:20}]}).pretty()
3.5 AND 和 OR 聯(lián)合使用
db.col_1.find({"likes":{$gt:50},$or:[{age:20},{phone:15633577595}]}).pretty()
3.6 $exists()
$exists,用于查詢集合中存在某個鍵的文檔或不存在某個鍵的文檔,例如查詢col_1集合中存在name鍵的所有文檔
db.col_1.find({name:{$exists:1}})
3.7 $in和$nin
查詢年齡在18馋没,19昔逗,20在這個區(qū)間的文檔
db.col_1.find({age:{$in:[18,19,20]}})
查詢年齡不在18,19篷朵,20在這個區(qū)間的文檔
db.col_1.find({age:{$nin:[18,19,20]}})
部分部署可參考:http://blog.csdn.net/sinat_36841379/article/details/70653027