MongoDB常用操作

數據庫的基本操作

use db_name

創(chuàng)建數據庫

db

查看當前連接的數據庫

show dbs

顯示所有數據庫,不顯示空數據庫

db.dropDatabase()

刪除當前數據庫


集合的基本操作

show collections

顯示所有集合

db.collection_name.drop()

刪除集合

db.createCollection(name,args)

創(chuàng)建集合并使用args作為初始文檔

db.GPA.insert([
... {
... name:"王威龍",
... email:"wangweilong1996@gmail.com"
... }])

向集合GPA中插入數據

db.GPA.save([ { name:"王威龍1",
email:"wangweilong1996@gmail.com" }])

插入數據中,如果GPA集合不存在會自動創(chuàng)建

doc=({key:value,key:[{key:value,key:value}]})
db.collection_name.insert(doc)

插入預定義文檔


數據查詢

db.GPA.find({"name":"王威龍"}).pretty()

輸出集合中符合參數的數據

db.collection_name.find()

不帶參數返回集合中所有數據

db.collection_name.find().pretty()

使輸出結果更美觀

db.collection_name.find({key1:value1,key2:value2})

當參數中有多個鍵值對即視為AND查詢操作

db.collection_name.find( { $or: [ {key1:value1} , {key2:value2} ] })

OR查詢操作

db.collection_name.find({key1:value1, $or: [ {key2:value2},{key3:value3} ] })

OR AND 聯立查詢

key: {$gt:10}

key對應的value 大于 10

數據修改

db.collection_name.update({{key:value},{$set: {key1:value1}}},options)

更新鍵值對,option可為{multi:true},修改集合中的所有文檔

db.collection_name.save({_id:Objectid,new_data})

替換已存在的文檔

db.collection_name.remove({key_value})

刪除符合條件的數據

條件操作符

$gt:1

大于1

說明
$gt 大于
$lt 小于
$lte 小于等于
$gte 大于等于
$ne 不等于

$type

*  雙精度型-1
*  字符串-2
* 對象-3
* 數組-4
* 二進制數據-5
* 對象ID-7
* 布爾類型-8
* 數據-9
* 空-10
* 正則表達式-11
* JS代碼-13
* 符號-14
* 有作用域的JS代碼-15
* 32位整型數-16
* 時間戳-17
* 64位整型數-18
* Min key-255
* Max key-127

限制語句

db.collection_name.find().limit(n)

只讀取查找到的前n個記錄

db.collection_name.find().skip(n)

忽略讀取到的前n條

db.collection_name.find().sort({key:1|-1})

對結果排序,1表示升序排列,-1代表降序排列

索引-ensureIndex()

db.collection_name.ensureIndex({key:value},options)

建立索引,option參數如下

參數 類型 描述
background Boolean 建立索引要不要阻塞其他數據庫操作,默認為false
unique Boolean 建立的索引是否唯一,默認false
name string 索引的名稱,若未指定,系統(tǒng)自動生成
dropDups Boolean 建立唯一索引時,是否刪除重復記錄,默認flase
sparse Boolean 對文檔不存在的字段數據不啟用索引,默認false
expireAfterSeconds integer 設置集合的生存時間,單位為秒
v index version 索引的版本號
weights document 索引權重值,范圍為1到99999
default-language string 默認為英語
language_override string 默認值為 language

聚合

db.collection_name.aggregate({options})

options參數如下

* $match:查詢,跟find一樣;
* $limit:限制顯示結果數量;
* $skip:忽略結果數量;
* $sort:排序;
* $group:按照給定表達式組合結果。

聚合表達式

名稱 描述
$sum 計算總和
$avg 計算平均值
$min和$max 計算最小和最大值
$push 在結果文檔中插入值到一個數組
$addToSet 在結果文檔中插入值到一個數組,但不創(chuàng)建副本
$first 根據資源文檔的排序獲取第一個文檔數據
$last 根據資源文檔的排序獲取最后一個文檔數據

管道

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

原子操作

{$set:{field:value}}

指定一個鍵并更新鍵值,若不存在就創(chuàng)建

{$unset:{field:true}}

刪除一個鍵

{$inc :{field:value}}

對文檔的某個值為數字型的鍵進行增減操作

{$push:{field:value}}

把value追加到field,field一定是數組類型,如果field不存在,新增一個

{$pushAll:{field:value_array}}

同上,一次多值

{$pull:{field:value}}

從數組field中刪除一個等于value的值

{$addToSet:{field:value}}

增加value到數組中

{$pop:{field:1}}

刪除數組中的第一個或最后一個元素

{$rename:{old_name:new_name}}

修改字段名稱

{$bit:{field:{and:5}}}

位操作

查詢分析

explain()

提供查詢信息使用索引和查詢統(tǒng)計

結果中字段解釋:

  • indexOnly:為 true ,表示我們使用了索引;
  • cursor:因為這個查詢使用了索引,MongoDB中索引存儲在B樹結構中,所以這是也使用了BtreeCursor類型的游標。如果沒有使用索引,游標的類型是BasicCursor。這個鍵還會給出你所使用的索引的名稱,你通過這個名稱可以查看當前數據庫下的system.indexes集合(系統(tǒng)自動創(chuàng)建)來得到索引的詳細信息;
  • n:當前查詢返回的文檔數量;
  • nscanned/nscannedObjects:表明當前這次查詢一共掃描了集合中多少個文檔,我們的目的是,讓這個數值和返回文檔的數量越接近越好;
  • millis:當前查詢所需時間,毫秒數;
  • indexBounds:當前查詢具體使用的索引。

hint()

強迫mongoDB使用一個指定的索引

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容