MongoDB常用操作

數(shù)據(jù)庫的基本操作

use db_name

創(chuàng)建數(shù)據(jù)庫

db

查看當前連接的數(shù)據(jù)庫

show dbs

顯示所有數(shù)據(jù)庫,不顯示空數(shù)據(jù)庫

db.dropDatabase()

刪除當前數(shù)據(jù)庫


集合的基本操作

show collections

顯示所有集合

db.collection_name.drop()

刪除集合

db.createCollection(name,args)

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

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

向集合GPA中插入數(shù)據(jù)

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

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

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

插入預(yù)定義文檔


數(shù)據(jù)查詢

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

輸出集合中符合參數(shù)的數(shù)據(jù)

db.collection_name.find()

不帶參數(shù)返回集合中所有數(shù)據(jù)

db.collection_name.find().pretty()

使輸出結(jié)果更美觀

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

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

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

OR查詢操作

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

OR AND 聯(lián)立查詢

key: {$gt:10}

key對應(yīng)的value 大于 10

數(shù)據(jù)修改

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})

刪除符合條件的數(shù)據(jù)

條件操作符

$gt:1

大于1

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

$type

*  雙精度型-1
*  字符串-2
* 對象-3
* 數(shù)組-4
* 二進制數(shù)據(jù)-5
* 對象ID-7
* 布爾類型-8
* 數(shù)據(jù)-9
* 空-10
* 正則表達式-11
* JS代碼-13
* 符號-14
* 有作用域的JS代碼-15
* 32位整型數(shù)-16
* 時間戳-17
* 64位整型數(shù)-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})

對結(jié)果排序,1表示升序排列,-1代表降序排列

索引-ensureIndex()

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

建立索引,option參數(shù)如下

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

聚合

db.collection_name.aggregate({options})

options參數(shù)如下

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

聚合表達式

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

管道

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

原子操作

{$set:{field:value}}

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

{$unset:{field:true}}

刪除一個鍵

{$inc :{field:value}}

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

{$push:{field:value}}

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

{$pushAll:{field:value_array}}

同上,一次多值

{$pull:{field:value}}

從數(shù)組field中刪除一個等于value的值

{$addToSet:{field:value}}

增加value到數(shù)組中

{$pop:{field:1}}

刪除數(shù)組中的第一個或最后一個元素

{$rename:{old_name:new_name}}

修改字段名稱

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

位操作

查詢分析

explain()

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

結(jié)果中字段解釋:

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

hint()

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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容