1. 程式人生 > >MongoDB簡單命令及操作

MongoDB簡單命令及操作

現在正在學習NoSQL這門課程,上節課已經安裝好mongodb,現在記錄一下MongoDB的簡單命令。

1、建立資料庫

> use 資料庫表名
> db

此時可以進行檢視是否建立成功

> show dbs

發現我們剛才建立的asd並不在資料庫的列表中,如果要顯示它,我們需要向asd資料庫插入一些資料,操作如下:

>db.asd.insert({"name":"ASD"})

此刻我們再來用命令show dbs 就可以看到我們剛才建立的asd資料庫了,具體操作結果如下:
這裡寫圖片描述
這樣子就建立好一個數據庫了。

2、刪除資料庫

我們先檢視一下所有的資料庫

>show dbs

然後我們進入asd資料庫

> use asd

然後就可以進行刪除

> db.dropDatabase()

執行完之後我們在用命令show dbs 檢查是否刪除成功,效果圖如下:
這裡寫圖片描述

3、建立集合

在test資料庫中建立asd集合

> use test
> db.createCollection("asd")

使用show collections 命令來檢視是否建立集合成功

> show collections

具體效果如下:
這裡寫圖片描述

4、刪除集合

在資料庫test中,檢視已存在的集合

> use test
> show collections

接著對你將要刪除的集合進行操作,這裡刪除asd集合

>db.asd.drop()

我的執行結果如下:
這裡寫圖片描述

5、插入文件(document)

語法格式

> db.COLLECTION_NAME.insert(document)

如:

> db.student.insert({"sno":"201601","sex":"1","age":"20","name":"小張"})
> db.student.insert({"sno":"201602","sex":"1","age":"26","name":"小王"})
> db.student.insert({"sno":"201603","sex":"2","age":"23","name":"小紅"})
> db.student.insert({"sno":"201604","sex":"1","age":"21","name":"小張兒"})
> db.student.insert({"sno":"201605","sex":"2","age":"17","name":"小玉兒"})

具體效果如下:
這裡寫圖片描述

6、修改文件(document)

具體示例:

> db.student.update({"sno":201604},{$set:{"name":"張三"}})

修改結束之後,在使用find()函式檢驗是否修改成功

> db.student.find({"sno":"201604"}).pretty()

執行結果如下圖:
這裡寫圖片描述

7、刪除文件(document)

刪除分為兩種,一種是按條件刪除,一種是全部刪除,語法如下:

按條件刪除
db.COLLECTION_NAME.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

刪除所有文件
db.COLLECTION_NAME.remove({})
db.COLLECTION_NAME.deleteMany({})

示例如下:
按條件刪除:

> db.student.remove({"sno":"201605"})

結果如下:
這裡寫圖片描述
這裡就不示範刪除所有文件了。

8、查詢文件(document)

語法格式

db.COLLECTION_NAME.find(query, projection)

示例:
(1)按條件查詢

> db.student.find({"sno":"201604"})

這裡寫圖片描述
(2) 查詢姓小的

> db.student.find({"name":/^小/})

這裡寫圖片描述
(3)查詢age大於22歲的

> db.student.find({"age":{$gt:"22"}})

結果如下:
在這裡插入圖片描述

(4)查詢age在20-25之間的

db.student.find({"age":{$gte:"20",$lt:"25"}})

在這裡插入圖片描述
(5) 查詢女生或者年齡小於25的

db.student.find({$or:[{"sex":2},{"age":{$lt:"25"}}]})

在這裡插入圖片描述

9、排序

語法格式
db.COLLECTION_NAME.find().sort({key1:1, key2:1})
示例:

> db.student.find({}).sort({"sex":-1,"age":1})

使用 1 表示升序,-1 表示降序
這裡寫圖片描述

10、修改集合名字

> db.lsl.renameCollection("student")

表明將集合lsl名字重新命名為student

11、限制記錄數

語法格式
db.COLLECTION_NAME.find().limit(NUMBER)
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
使用 limit() 方法讀取指定數量的資料,還可以使用 skip() 方法來跳過指定數量的資料
如下圖:
這裡寫圖片描述

12、聚合

> db.student.aggregate([{$group:{"_id":"$sex","result":{$sum:1}}}])

在這裡插入圖片描述

13、_id索引

> db.student.getIndexes()

在這裡插入圖片描述

14、建立索引

(1)給集合person 的name 欄位建立索引

> db.person.createIndex({"name":1})

在這裡插入圖片描述
(2)給集合asdperson的name欄位建立索引,並指定索引的名稱為idx_name

> db.person.createIndex({"name":1},{"name":"idx_name"})

在這裡插入圖片描述

(3)給集合aperson的name和age欄位建立複合索引

> db.person.createIndex({"name":1,"age":1})

在這裡插入圖片描述

15、地理位置索引之$near的用法

語法
db.COLLECTION_NAME.find({
‘FIELD_NAME’ : {
$near:{
$geometry:{
type: “Point”,
coordinates: [ , ]
},
$maxDistance: ,
$minDistance:
}
}
})
示例如下:
(1)先對集合places插入5條測試資料

> db.palces.insert({'loc':[106.711770,26.588760],'name':'中華北路星力折扣超市'})

> db.places.insert({'loc':[106.710970,26.570140],'name':'人民廣場沃爾瑪'})

> db.places.insert({'loc':[106.711290,26.599430],'name':'鹽務街北京華聯'})

> db.places.insert({'loc':[106.714330,26.580970],'name':'富水北路北京華聯'})

> db.places.insert({'loc':[106.705770,26.581270],'name':'瑞金中路紅華便利'})

(2)建立索引

> db.places.ensureIndex({'loc':'2dsphere'})

(3)查詢雲巖廣場[106.711836,26.588594]附近1000米範圍的點

> db.places.find({'loc':{$near:{$geometry:{type:"Point",coordinates:[106.711836,26.588594]},$maxDistance:1000}}})

在這裡插入圖片描述

16、全文檢索

(1)在集合demo中插入3條資料

> db.demo.insert({"info":"Robots are superior to humans"})
> db.demo.insert({"info":"Humans are greate"})
> db.demo.insert({"info":"Robots are only smart machine"})

在這裡插入圖片描述
(2)給集合demo建立全文檢索

> db.demo.createIndex({"info":"text"})

在這裡插入圖片描述

(3.1)檢索包含Robots的文件

> db.demo.find({$text:{$search:"Robots"}})

在這裡插入圖片描述

(3.2)檢索包含Robots或Humans的文件

> db.demo.find({$text:{$search:"Robots Humans"}})

在這裡插入圖片描述

(3.3)檢索包含Robots但不包含Humans的文件

> db.demo.find({$text:{$search:"Robots -Humans"}})

在這裡插入圖片描述

(3.4)檢索片語"Robots are"

> db.demo.find({$text:{$search:'"Robots are"'}})

在這裡插入圖片描述
(3.5)檢索並對結果打分

db.demo.find({$text:{$search:"Robots"}},{"score":{"$meta":"textScore"}})

在這裡插入圖片描述

17、使用者認證

(1.1)建立使用者

> db.createUser( 
  { 
    user: "testadmin", 
    pwd: "2012", 
    roles: [ { role: "readWrite", db: "test" } ] 
  } )

建立結果如下:
在這裡插入圖片描述

(1.2)建立使用者結束後,需要重新啟動mongodb服務,開啟認證

> mongod --dbpath D:\Software\mongo\data\db --auth

(1.3)

> use test
> db.auth('testadmin','2012')

結果如下:
在這裡插入圖片描述
然後就可以進行操作了。
(2) 修改使用者許可權

> db.updateUser("testadmin",
	{roles:[{role:"read",db:"test"}]
})

(3)修改使用者密碼

> db.changeUserPassword("testadmin","2018")

效果如下('2012’是原密碼,而’2018’是新密碼):
在這裡插入圖片描述

18、資料備份

> mongodump -h localhost --port 27017 -d test -c place -o D:\backup -u testadmin -p 2018 --authenticationDatabase test