mongodb命令指南
一.什麼是MongoDB
簡單的說,MongoDB是一種資料庫,像我們常用的MySQL,sqlserver,orcale.但是跟這些資料庫不同的是,他們都是關係型資料庫,而MongoDB是非關係型資料庫(NoSql)。MongoDB是一個高效能,開源,無模式的文件型資料庫,是當前NoSql資料庫中比較熱門的一種。它在許多場景下可用於替代傳統的關係型資料庫或鍵/值儲存方式。Mongo使用C++開發。Mongo的官方網站地址是:http://www.mongodb.org/,讀者可以在此獲得更詳細的資訊。
MongoDB有三個基本的術語,資料庫,集合,文件。資料庫大家都知道是什麼。那麼集合是什麼,集合就相當於mysql的表;文件就相當於表中的某一列。
這麼說就很清楚了吧。
首先說說資料庫和集合的指令:
1.檢視所有的資料庫:
show dbs
2.使用某一個資料庫
use mydb
3.檢視這個資料庫中所有的集合:
show collections
二.查詢:MongoDB find
query 可選. 使用查詢操作符指定查詢條件
fields 可選. 指定返回的鍵。查詢時返回文件中所有鍵值, 只需省略該引數即可(預設省略)
1).查詢集合中的所有文件。
//將返回集合中所有文件
db.collection.find()
//或者
db.collection.find({})
第一個引數若為鍵/值對時,查詢過程中就意味著執行了條件篩選(query),下面查詢操作將返回collection集合中age鍵值為18的文件集合。
db.collection.find({"age":18})
//也可以多個條件查詢,逗號隔開就好了
db.collection.find({"age":18,"sex":"man"})
我們可以通過find 的第二個引數來指定返回的鍵。
若find不指定第二個引數,查詢操作預設返回查詢文件中所有鍵值。mongo中也可以指定返回的鍵,這樣我們就可以避免查詢無用鍵值查詢所消耗的資源、會節省傳輸的資料量和記憶體消耗。
db.users.find({}, {"age":1})
注意看 {"age":1},並不是指age=1,因為它在第二個引數(fields),指的是,查詢文件中所有的age,當然,也可以多個值。
如果資料時雙層的。例如:
"user":{
"name":"mm",
"age":10
}
無論是 query還是fields都是支援的。比如你需要查詢 age = 10的所有玩家。
db.collection.find({"user.age":18})
查詢條件不只是相等,也可以用其他比較操作。
比如,我們使用下面的比較操作符"$gt","$gte","$lt","$lte","$ne"(分別對應">"、 ">=" 、"<" 、"<=","!="),組合起來進行範圍的查詢。
如 查詢 年齡 大於20小於30歲的玩家
db.collection.find({"age":{"$gt":20,"lt":30}})
$in
查詢key在values列表的的文件。
db.collection.find({"age":{"$in":[10,20]}})
mongodb是很靈活的,以上所有的查詢,都可以隨意組合,也可以用於update,開動你的想象力吧,只要滿足mongodb語法。
$or
查詢key1,key2任意一個滿足的條件。
db.collection.find({"$or":[{"userid":123456},{"name":"hehe"}]})
sort 排序
在mongodb中使用使用sort()方法對資料進行排序,sort()方法可以通過引數指定排序的欄位,並使用 1 和 -1 來指定排序的方式,其中 1 為升序排序,而-1是用於降序排列。
db.collection.find().sort({"age":1})
db.collection.find().limit(100)
比如,我們要做一個排行榜功能,需要在某collection中查詢分數最多的100名玩家:
db.collection.find().sort({"score":-1}).limit(100)
三.更新:MongoDB update
mongodb update用了更新文件。
db.collection.update( criteria, objNew, upsert, multi )
query : update的查詢條件,類似sql update查詢內where後面的
fields : update的物件和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set後面的
upsert : 這個引數的意思是,如果文件中不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
multi : mongodb預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。
upsert和multi很簡單就不解釋了。下面知悉講講query和fields:
用法:{ $set : { field : value } }
就是相當於sql的set field = value,全部資料型別都支援$set。
db.collection_name.update( { "id" : 1 } , { $set : { "name" : "mm"} } )
set是設定key為name的value為"mm"
2) $inc
用法:{ $inc : { field : value } }
意思對一個數字欄位field增加value,例:
db.collection_name.update({ "id" : 1 } , { $set : { "number" : 1} } )
如上,如果沒有name或者number但是需要新增(甚至沒有這個"id"=1的doc),需要把upsert置為true.
3) $unset
用法:{ $unset : { field : 1} }
顧名思義,就是刪除欄位了。例:
> db.collection_name.update({ "id" : 1 } , { $unset : { "name":1 } } )
就是把doc的name欄位給刪除了。
沒看出field : 1裡面的1是幹什麼用的。
陣列操作:
4) $push
把value追加到field裡面去,field一定要是陣列型別才行,如果field不存在,會新增一個陣列型別加進去。例:
> db.collection_name.update( { "id" : 1 } , { $push : { "phone": "123" } } );
其中 phone是一個list,把123加進去。注:即使phone裡面有123,還是會加進去,如果需要不重複,需要用到$addToSet.
5) $addToSet
增加一個值到陣列內,而且只有當這個值不在陣列內才增加。例:
> db.collection_name.update({ "id" : 1 } , { $addToSet : { "phone": {$each : ["222","333"] } } } );
phone後面可以是"123",也可以新增多個值,{"$each":["222","333"]},如果存在這個值,那就忽略掉。
6) $pushAll
用法:{ $pushAll : { field : value_array } }
同$push,只是一次可以追加多個值到一個陣列欄位內。例:
> db.collection_name.update( { "id" : 1 } , { $pushAll : { "phone": ["444","555"] } } );
7) $pop
刪除陣列內的一個值
用法:
刪除最後一個值:{ $pop : { field : 1 } }
刪除第一個值:{ $pop : { field : -1 } }
注意,只能刪除一個值,也就是說只能用1或-1,而不能用2或-2來刪除兩條。
8) $pull
用法:$pull : { field : value } }
從陣列field內刪除一個等於value值。例:
> db.collections.update( { "_d" : 1 } , { $pull : { "phone": "111" } } );
9) $pullAll
用法:{ $pullAll : { field : value_array } }
同$pull,可以一次刪除陣列內的多個值。例:
> db.collections.update( { "id" : 1 } , { $pullAll : { "phone": [ "222" , "333" ] } } )
相關文章
- MongoDB安裝指南MongoDB
- Mongodb管理命令MongoDB
- mongodb命令(1)MongoDB
- mongoDB 入門指南、示例MongoDB
- MongoDB效能優化指南MongoDB優化
- MongoDB基礎命令MongoDB
- Mongodb 常用操作命令MongoDB
- MongoDB基本管理命令MongoDB
- MongoDB 基本命令MongoDB
- 【mongoDB】常用操作命令MongoDB
- Java 中 MongoDB 使用指南JavaMongoDB
- MongoDB分片鍵選擇指南MongoDB
- MongoDB命令--自用記錄MongoDB
- MongoDB常用命令MongoDB
- 詳解MongoDB管理命令MongoDB
- MongoDB基本命令用MongoDB
- MongoDB mongotop命令詳解MongoDB
- mongodb 監控分析命令MongoDB
- MongoDB基本常用命令MongoDB
- systemctl 命令完全指南
- 快速掌握mongoDB(一)——mongoDB安裝部署和常用shell命令MongoDB
- MongoDB權威指南學習筆記03MongoDB筆記
- Git實用命令指南Git
- MongoDB常用命令彙總(一)MongoDB
- MongoDB三種聚合命令用法介紹MongoDB
- MongoDB shell常用命令總結MongoDB
- MongoDB日常運維操作命令小結MongoDB運維
- MongoDB 常用命令與經驗MongoDB
- MongoDB的mongostat命令輸出詳解MongoDB
- MongoDB 最佳實踐和場景避坑指南MongoDB
- Docker常用命令指南Docker
- Linux systemctl 命令完全指南Linux
- linux命令入門指南Linux
- MongoDB 學習筆記之常用 shell 命令MongoDB筆記
- MongoDB的mongo命令使用完整版MongoDB
- mongodb 備份恢復常用命令MongoDB
- MongoDB的分片資料庫命令總結MongoDB資料庫
- Mongodb啟動命令mongod引數說明MongoDB