【MongoDB】3.詳細命令集合


【注意:MongoDB自動將_id字段設置為主鍵】

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->

話不多說  直接 開始敲命令吧!

【注意1:MongoDB  命令結尾不要打;  是會報錯的】

【注意2:RoboMongo  執行命令的快捷鍵是F5   停止執行快捷鍵是F6】

1.show dbs  

顯示所有數據的列表

 

2.db 

顯示當前數據庫對象或集合

 

3.use

可以連接到一個指定的數據庫

 

 4. db.createCollection("myNewCollection",{capped:true,size:1024}) 

固定大小的collection【collection大小單位是字節】【capped:true 代表固定大小】

 

5.db.collection.stats() 

產看當前db下的某個collection的詳細信息

例如:

db.users.stats()

 1 {
 2     "ns" : "oneDB.users",
 3     "count" : 4,
 4     "size" : 256,
 5     "avgObjSize" : 64,
 6     "numExtents" : 1,
 7     "storageSize" : 8192,
 8     "lastExtentSize" : 8192.0,
 9     "paddingFactor" : 1.0,
10     "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
11     "userFlags" : 1,
12     "capped" : false,
13     "nindexes" : 1,
14     "totalIndexSize" : 8176,
15     "indexSizes" : {
16         "_id_" : 8176
17     },
18     "ok" : 1.0
19 }
View Code
 1 部分參數的詳細解釋:
 2          ns:     集合的命名空間,可以理解為集合名稱
 3          count:  集合中的文檔總數
 4          size:   集合中數據占用空間大小,不包括索引 ,單位為字節。
 5          avgObjSize:  平均對像占用的空間大小
 6          storageSize: 給整個集合分配的存儲空間,當刪除集合中的文檔時,這個值不會降代。
 7          numExtents:  連續分配的數據塊
 8          nindexes:     索引個數,每個集合至少有一個 _id 索引。 
 9          lastExtentSize: 最近分配的塊的大小
10          paddingFactor:   這個參數不太清楚,以后補充。
11          totalIndexSize:  所有索引大小總和
12          indexSizes:      列出集合的所有索引字段,以及索引大小。    
View Code

6.db.dropDatabase()

刪除當前數據庫

 

7.use  dbName

有則指定到這個數據庫,沒有則創建這個數據庫  但是創建之后是默認不會顯示在數據庫列表的,需要往里面插入一條數據 就能顯示出來了

【注意:插入數據應該有大括號括起來的{}】

例如:

use oneDB
db
db.users.insert({_id:1,"name":"張三豐","age":23})

8.db.collection.drop()

刪除集合

例如:

9. 定義變量 插入數據

document = {_id:1,"name":"張三","age":23,"url":"www.baidu.com"}
db.users.save(document)

10. 更新某一條數據

db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
  • query : update的查詢條件,類似sql update查詢內where后面的。
  • update : update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set后面的
  • upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
  • multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。
  • writeConcern :可選,拋出異常的級別。

例如:

db.users.update({_id:1},{$set:{"url":"https://home.cnblogs.com/u/sxdcgaq8080/"}},{upsert:true,muti:true})
db.users.find()

11.db.users.find()  查詢【各種查詢】

  find() 方法以非結構化的方式來顯示所有文檔

db.users.find().pretty()

  如果你需要以易讀的方式來讀取數據,可以使用 pretty() 方法;pretty() 方法以格式化的方式來顯示所有文檔

db.users.findOne()

  findOne() 方法,它只返回一個文檔

 

操作 格式 范例 RDBMS中的類似語句
等於 {<key>:<value>} db.users.find({"name":"張三"}).pretty() where by = '張三'
小於 {<key>:{$lt:<value>}} db.users.find({"age":{$lt:23}}).pretty() where likes < 23
小於或等於 {<key>:{$lte:<value>}} db.users.find({"age":{$lte:23}}).pretty() where likes <= 23
大於 {<key>:{$gt:<value>}} db.users.find({"age":{$gt:23}}).pretty() where likes > 23
大於或等於 {<key>:{$gte:<value>}} db.users.find({"age":{$gte:23}}).pretty() where likes >= 23
不等於 {<key>:{$ne:<value>}} db.users.find({"age":{$ne:23}}).pretty() where likes != 23

 

 

 例如:等於-->db.users.find({"age":23})



小於-->db.users.find({"age":{$lt:25}})

小於等於-->db.users.find({"age":{$lte:25}})

 

 

AND 條件查詢

例如:db.users.find({"age":{$lte:25},"name":"張三"})

兩個key-value並列放着就行了

 

OR條件查詢

例如:db.users.find({$or:[{"name":"張三"},{"age":25}]})

【注意:需要使用  {$or:[{key:value},{key:value}]}這種格式】

 

AND和OR混用的情況

例如:db.users.find({"age":{$gte:23},$or:[{_id:1},{"name":"里斯"}]})

 

剖析一下結構:

db.users.find({
  "age":{$gte:23},
  $or:[
    {_id:1},
    {"name":"里斯"}
  ]
})

 

 12.$type操作符

$type操作符是基於BSON類型來檢索集合中匹配的數據類型,並返回結果

MongoDB中的  數據類型對應數字如下:

類型 數字 備注
Double 1  
String 2  
Object 3  
Array 4  
Binary data 5  
Undefined 6 已廢棄。
Object id 7  
Boolean 8  
Date 9  
Null 10  
Regular Expression 11  
JavaScript 13  
Symbol 14  
JavaScript (with scope) 15  
32-bit integer 16  
Timestamp 17  
64-bit integer 18  
Min key 255 Query with -1.
Max key 127  

例如:db.users.find({_id:{$type:1}})  

查詢_id格式為double類型的 結果:

   

 

例如:db.users.find({_id:{$type:7}})

查詢_id格式為object id類型的  結果:

   

 

 13.limit() 

在MongoDB中讀取指定數量的數據記錄,可以使用MongoDB的Limit方法,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數【默認為0】

例如:db.users.find({_id:{$type:7}}).limit(3)

 

14.skip()

使用skip()方法來跳過指定數量的數據,skip方法同樣接受一個數字參數作為跳過的記錄條數。【默認為0】

例如:db.users.find({_id:{$type:7}}).skip(3)

 

15.sort()排序

sort()方法可以通過參數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而-1是用於降序排列。

例如:db.users.find({_id:{$type:7}}).sort({_id:-1})

 

 16.索引 ensureIndex()

創建索引--> db.users.ensureIndex({_id:1})   【1代表升序  -1代表降序】

創建多個索引-->db.users.ensureIndex({_id:1,"name":-1})

創建帶參數的索引-->db.users.ensureIndex({_id:1},{unique:true})

Parameter Type Description
background Boolean 建索引過程會阻塞其它數據庫操作,background可指定以后台方式創建索引,即增加 "background" 可選參數。 "background" 默認值為false
unique Boolean 建立的索引是否唯一。指定為true創建唯一索引。默認值為false.
name string 索引的名稱。如果未指定,MongoDB的通過連接索引的字段名和排序順序生成一個索引名稱。
dropDups Boolean 在建立唯一索引時是否刪除重復記錄,指定 true 創建唯一索引。默認值為 false.
sparse Boolean 對文檔中不存在的字段數據不啟用索引;這個參數需要特別注意,如果設置為true的話,在索引字段中不會查詢出不包含對應字段的文檔.。默認值為 false.
expireAfterSeconds integer 指定一個以秒為單位的數值,完成 TTL設定,設定集合的生存時間。
v index version 索引的版本號。默認的索引版本取決於mongod創建索引時運行的版本。
weights document 索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其他索引字段的得分權重。
default_language string 對於文本索引,該參數決定了停用詞及詞干和詞器的規則的列表。 默認為英語
language_override string 對於文本索引,該參數指定了包含在文檔中的字段名,語言覆蓋默認的language,默認值為 language.

 

  

 

17.aggregate()

聚合(aggregate)主要用於處理數據(諸如統計平均值,求和等),並返回計算后的數據結果

 首先我們可以看到--->db.users.find()

  

接着使用聚合aggregate()--->db.users.aggregate([{$group:{_id:"$name",allSum:{$sum:1}}}])  

【即:按照name列進行分組,就是"$name"表示,最外層的分組就是$group,然后再$sum進行統計,將統計的結果放在allSum列】

  

 

下面展示一些聚合表達式:

表達式 描述 實例
$sum 計算總和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 計算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 獲取集合中所有文檔對應值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 獲取集合中所有文檔對應值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 在結果文檔中插入值到一個數組中。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 在結果文檔中插入值到一個數組中,但不創建副本。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根據資源文檔的排序獲取第一個文檔數據。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根據資源文檔的排序獲取最后一個文檔數據 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

 

 

使用例如-->db.users.aggregate([{$group:{_id:"$name",avgAge:{$avg:"$age"}}}])

【根據name分組,則"$name",則$group,計算age的平均值,則avgAge:{$avg:"$age"}】

  

 

下面再介紹一下聚合框架中常用的幾個操作:

  • $project:修改輸入文檔的結構。可以用來重命名、增加或刪除域,也可以用於創建計算結果以及嵌套文檔。
  • $match:用於過濾數據,只輸出符合條件的文檔。$match使用MongoDB的標准查詢操作。
  • $limit:用來限制MongoDB聚合管道返回的文檔數。
  • $skip:在聚合管道中跳過指定數量的文檔,並返回余下的文檔。
  • $unwind:將文檔中的某一個數組類型字段拆分成多條,每條包含數組中的一個值。
  • $group:將集合中的文檔分組,可用於統計結果。
  • $sort:將輸入文檔排序后輸出。
  • $geoNear:輸出接近某一地理位置的有序文檔。

 

 例如:$project的使用

首先-->db.users.find()

然后使用-->db.users.aggregate({$project:{_id:0,name:1,age:1}})

【僅查詢name,age兩列,_id設置為0則不查詢】

 

再來看看-->db.users.aggregate([{$match:{"age":{$gt:22,$lt:25}}}])

【$match篩選     22<年齡<25】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM