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