mongo數(shù)據(jù)庫所有知識點(diǎn)

mongo數(shù)據(jù)庫筆記

1、創(chuàng)建集合

集合的名字,參數(shù)

db.createCollection(name, options)

2、查看集合

show collections

3、刪除集合

db.集合名字.drop()

4、與mysql區(qū)別

mysql? mongo

表? ? ? 集合

行? ? ? 文檔

列? ? ? 字段

表? ? ? 聯(lián)合嵌入文檔

主鍵? ? ? 主鍵 (MongoDB 提供了 key 為 _id )

5、插入文檔(insert方法)

insert方法: 不能插入相同的數(shù)據(jù)

db.集合名字.insert(里面是集合的名字)

eg:插入單個(gè)文檔

db.coll_stu.insert({

"name":"小美",

"age":19,

"desc":"我是小美,我最愛錢",

"hobby":["逛街","抽煙"]

})

插入多個(gè)文檔

db.coll_stu.insert([

{

"name":"小紅",

"age":21,

"desc":"我是小紅,我最愛你",

"hobby":["蹦迪","花錢"]

},

{

"name":"小美",

"age":19,

"desc":"我是小美,我最愛錢",

"hobby":["逛街","抽煙"]

}])

插入文檔(save方法)

save方法:當(dāng)我們插入時(shí),如果數(shù)據(jù)已經(jīng)存在,會有更新的意思

不存在就會往里面插入數(shù)據(jù)

db.coll_stu.save({

"name":"小美",

"age":19,

"desc":"我是小美,我最愛錢",

"hobby":["逛街","抽煙"]

})

6、查詢文檔

db.集合名字.find()

以格式化的方式查詢

db.集合名字.find().pretty()

find()里面加條件

想要查詢名字為小紅的人

db.coll_stu.find({"name":"小紅"})

查詢年齡小于20的

db.coll_stu.find({"age":{$lt:20}})

小于等于 $lte

大于 $gt? 大于等于$gte

不等于 $ne

And是查多條件并且的關(guān)系

$and也可以省略,直接傳入鍵值對,以逗號分隔

查詢小紅并且年齡為二十一

db.coll_stu.find({"name":"小紅","age":21})

or 表示或者

名字為小紅的人或者年齡為19的人

db.coll_stu.find({$or:[{"name":"小紅"},{"age":19}]})

And 和or連用

年齡大于二十八歲的或者名字為小紅或者描述為這個(gè)的人

db.coll_stu.find({"age":{"$gte":21},$or:[{"name":"小紅"},{"desc":"我是小美,我最愛錢"}]})

7、更新文檔(update),(save也可以更新)

區(qū)別:save更新數(shù)據(jù)結(jié)構(gòu)體,update更新數(shù)據(jù)

db.集合名字.update(query,update,

{

upsert: boolean,

? ? multi: boolean,

}

)

query:更新的條件

update:更新的內(nèi)容,指的哪些字段

upsert:如果更新的數(shù)據(jù)不存在,你是否要插入進(jìn)去,true為插入,默認(rèn)是false,不插入。

multi:默認(rèn)是false,只更新找到的第一條記錄

把名字為小美的年齡改成58(只修改找到它的第一條數(shù)據(jù))

例子:db.coll_stu.update({"name":"小美"},{"$set":{"age":58}})

這個(gè)就是修改找到它的所有數(shù)據(jù)

db.coll_stu.update({"name":"小美"},{"$set":{"age":58}},{"multi":true})

8、刪除文檔

db.collection.remove(

query

{

? ? justOne: <boolean>,

}

)

justOne是否刪除多個(gè),True刪除一個(gè),F(xiàn)alse刪除多個(gè)

查詢多個(gè)刪除多個(gè)

列子:db.coll_stu.remove({"name":"小美"})

加上{"justOne": true,},查詢多個(gè),刪除一個(gè)

db.coll_stu.remove({"name":"小美"},{"justOne":true})

9、投影:可以隱藏不想要的字段

想顯示字段的話就把KEY置為1,不想顯示置為0

db.集合名字.find({}, {KEY:1})

例子:只看姓名

db.coll_stu.find({},{"name":1})

10、

limit() 方法 和? skip() 方法

可以做分頁

limit() 方法

db.集合名字.find().limit(NUMBER)

列子:至少返回幾條數(shù)據(jù)

db.coll_stu.find().limit(2)

skip()方法,

db.集合名字.find().skip().limit(NUMBER)

例子:從第二條開始查詢(把前一條過濾,不看第一條)

db.coll_stu.find().skip(1).limit(2)

11、排序

1用于升序,-1用于降序

db.集合名字.find().sort({KEY:1})

例子:把年齡按照升序排

db.coll_stu.find().sort({"age":1})

先按照第一個(gè)字段排序,當(dāng)?shù)谝粋€(gè)字段一樣的時(shí)候按照第二個(gè)字段排序

db.coll_stu.find().sort({"name":-1,"age":-1})

12、聚合

可以對我們查詢到的數(shù)據(jù)進(jìn)行分組

db.集合名字.aggregate(AGGREGATE_OPERATION)

例子:按照name來分組,? ? ? ? ? ? ? ? ? ? ? 根據(jù)年齡字段來求和

db.coll_stu.aggregate({$group:{_id:"$_id",num:{$sum:"$age"}}})

根據(jù)名字分組求年齡的和

db.coll_stu.aggregate({$group:{_id:"$name",num:{$sum:"$age"}}})

根據(jù)名字分組求年齡平均值

db.coll_stu.aggregate({$group:{_id:"$name",num:{$avg:"$age"}}})

求最小值

db.coll_stu.aggregate({$group:{_id:"$name",num:{$min:"$age"}}})

取最大值

db.coll_stu.aggregate({$group:{_id:"$name",num:{$max:"$age"}}})

將某個(gè)字段的值作為數(shù)組插入

db.coll_stu.aggregate({$group:{_id:"$name",num:{$push:"$age"}}})

加入到集合當(dāng)中,但字段不重復(fù)

db.coll_stu.aggregate({$group:{_id:"$name",num:{$addToSet:"$age"}}})

13、管道

輸入一些條件,讓滿足條件的輸出來在進(jìn)行一些操作

$group:將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果

$match:用于過濾數(shù)據(jù),只輸出符合條件的文檔。

db.coll_stu.aggregate({$match:{"hobby":["逛街","抽煙"]}},

{$group:{_id:"$_id",num:{$sum:"$age"}}})

過濾大于19的

db.coll_stu.aggregate({$match:{"age":{"$gt":19}}})

大小比較(返回的值? 大的返回1,小的返回-1,相等的返回0)

db.coll_stu.aggregate({$project:{"age":{"$cmp":["$age",19]}}})

大于比較(返回的值是大是True和小是False)

db.coll_stu.aggregate({$project:{"age":{"$gt":["$age",19]}}})

14、索引? (根據(jù)業(yè)務(wù)需求選擇哪些字段創(chuàng)建索引)

可以讓我們查詢的速度更快,1表示按升序創(chuàng)建索引,-1表示降序。

查詢索引

db.coll_stu.getIndexes()

創(chuàng)建索引? (后臺創(chuàng)建索引需要加{"background":true})

db.集合名字.ensureIndex()

根據(jù)名字創(chuàng)建索引

db.coll_stu.ensureIndex({"name":1})

刪除全部索引

db.coll_stu.dropIndexes()

刪除選定的索引

db.coll_stu.dropIndex("name_1")

查看索引大小

db.coll_stu.totalIndexSize()

16、備份數(shù)據(jù)

可以把整個(gè)庫備份,也可以把某個(gè)集合備份到某個(gè)地方

備份整個(gè)數(shù)據(jù)庫? ? ? ? ? ? ? ? ? ? ? ? (備份的路徑)

mongodump -h host:port -d 庫的名字 -o dbdirectory

例子:mongodump -h 127.0.0.1:27017 -d test1 -o /User/y3560/桌面

備份數(shù)據(jù)庫中的某個(gè)集合

mongodump -h host:port --collection 集合名字 -d 庫的名字 -o dbdirectory

例子:mongodump -h 127.0.0.0:27017 --collection coll-stu -d test1 -o

恢復(fù)數(shù)據(jù)

mongorestore -h hostname:port -d 庫的名字 path

例子:mongorestore -h 127.0.0.1:27017 -d test1 /User/y3560/桌面/test1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容