MongoDB基礎操作之CRUD Read

2021-10-01 13:16:33 字數 4529 閱讀 3765

db.collection.find()

投射

全文件查詢:db.collection.find()

## 文件定義了對讀取結果進行的投射

db..find(

, )

讀取全部文件:既不篩選,也不投射

db..find(

)db..find(

).pretty(

)## 例子:

db.accounts.find(

)## 更清楚的列印文件

db.accounts.find(

).pretty(

)

篩選文件:匹配查詢

## 讀取alice的銀行賬戶文件

db.accounts.find(

)## 讀取銀行賬戶型別為儲蓄賬戶的文件

## 注意:

### 當查詢條件中涉及子級內容的需要使用""包起來,如"_id.type"

### 一級條件可以不使用"",如name

### 這裡建議都使用""包起來

db.accounts.find(

)

篩選文件:比較操作符

}

operator

含義eq

匹配字段值相等的文件

ne匹配字段值不等的文件

gt匹配字段值大於查詢值的文件

gte匹配字段值大於或等於查詢值的文件

lt匹配字段值小於查詢值的文件

lte匹配字段值小於或等於查詢值的文件

in匹配字段值與任何一查詢值相等的文件

nin匹配字段值與任何查詢值都不等的文件

## 使用$eq查詢和匹配查詢效果相同

db.accounts.find(})

## 使用$ne查詢

### 注意:$ne也會篩選出並不包含查詢欄位的文件

db.accounts.find(})

## 當使用gt,lt,gte,lte進行字串的比較的時候,會按照的字母的順序進行比較

## $in $nin

### 格式:}

### 注意:$nin和$ne一樣也會篩選出並不包含查詢欄位的文件

db.accounts.find(})

db.accounts.find(

})

篩選文件:邏輯操作符

operator

含義not

匹配篩選條件不成立的文件

and匹配多個篩選條件全部成立的文件

or匹配至少乙個篩選條件成立的文件

nor匹配多個篩選條件全部不成立的文件

## $not

### 格式:}}

)## $not

### 格式:},}

]})db.accounts.find(

,name:})

db.accounts.find(

})

篩選文件:字段操作符

operator

含義exists

匹配包含查詢欄位的文件

type

匹配字段型別符合查詢值的文件

## $exists

### 格式:}

### 注意:當使用$exists操作符時,查詢字段必須存在才會被篩選出來

db.accounts.find(})

## $type

### 格式1:}

### 格式2:}

db.accounts.find(})

db.accounts.find(

})

篩選文件:陣列操作符

operator

含義all

匹配陣列欄位中包含所有查詢值的文件

elemmatch

匹配陣列欄位中至少存在乙個值滿足篩選條件的文件

## $all

### 格式:}

db.accounts.find(})

## $elemmatch

### 格式:}}

db.accounts.find(

})

篩選文件:運算操作符

operator

含義regex

匹配滿足正規表示式的文件

## $regex

### 格式1:}

### 格式2:}

### 相容pcre v8.41正規表示式庫

#### 在和$in操作符一起使用時,只能使用/pattern/

db.accounts.find(

)db.accounts.find(

})

db..find()返回乙個文件集合游標在不迭代游標的情況下,只列出前20個文件。我們也可以使用游標下標直接訪問文件集合中的某乙個文件

var mycursor = db.accounts.find();

## 遍歷游標

### 遍歷完游標中所有的文件之後,或者在10分鐘後,游標便會自動關閉

mycursor

### 可以使用nocursortimeout()函式來保持游標一直有效,當然如果遍歷完游標,游標也會關閉。在不遍歷游標的情況下,需要手動關閉游標

var mycursor = db.accounts.find(

).nocursortimeout();

mycursor.close(

)

## .hasnext()

## .next()

var mycursor = db.accounts.find(})

;while(mycursor.hasnext());

## .foreach()

var mycursor = db.accounts.find(};

mycursor.foreach(printjson)

## .limit()

### 限制多少條文件

### 注意:.limit(0)是返回所有符合條件的文件

db.accounts.find(

}).limit(1)

## .skip()

### 跳過多少條文件

db.accounts.find(

}).skip(1)

db.accounts.find(

).skip(1).limit(1).count(true)

### 在不提供篩選條件時,.count()會從集合的元資料metadata中取得結果

### 當資料庫分布式結構較為複雜時,元資料中的文件數量可能不準確

db.accounts.find(

).count(

)## .sort()

### 這裡的定義了排序的要求

### 格式:

### 1表示由小及大的正向排序,-1表示逆向排序

db.accounts.find(

).sort(

)

需要注意的是,.skip().limit()之前執行,.sort()在在.skip().limit()之前執行

db..find(,)

不使用投影時,db..find()返回符合篩選條件的完整文件,而使用投影可以有選擇性的返回文件中的部分字段。

### 格式:

#### 1表示返回字段,0表示不返回字段

### 注意:除了文件主鍵之外,我們不可以在投影文件中混合使用包含和不包含這兩種操作,要麼在投影文件中列出所有應該包含的字段,要麼列出所有不應該包含的字段

db.accounts.fin(,)

db.accounts.find(},)

## 在陣列欄位上使用投影

### $slice操作符可以返回陣列欄位中的部分元素

#### 返回陣列中的第乙個元素

db.accounts.find(,}

)#### 返回陣列中的倒數第乙個元素

db.accounts.find(,}

)#### 此時,會先在陣列中執行skip(1)操作,然後執行limit(2)操作

db.accounts.find(,}

)### $elemmatch和$操作符可以返回陣列欄位中滿足篩選條件的第乙個元素

db.accounts.find(,}

)### 當查詢條件和後面的篩選條件一樣時,可以使用$

db.accounts.find(

},)

MongoDB 基礎操作

use 資料庫名稱 db 1 語法 use 資料庫名稱如果資料庫不存在,則建立資料庫,否則切換 連線 到指定資料庫 2 例項 備註 剛建立資料庫時,使用 show dbs 語句不顯示,原因是此時新建立的資料庫中並無資料 1 語法 db.dropdatabase 刪除資料庫之前,先切換 連線 到要刪除...

MongoDB基礎操作

mongod dbpath pathpath為你的資料庫路徑 在另開啟乙個終端並輸入 mongo即可 mongo 118.120 1.1 27017show dbsroot zhouls virtual machine usr local mongodb ls bin data gnu agpl 3...

MongoDB基礎的操作

sql與mongodb的區別 sql術語 mongodb 解釋 database database 資料庫 table collection 資料庫表 集合 row document 資料記錄行 文件 column field 資料字段 域 建立資料庫 use dbname 從這裡開始下文中所有的d...