MongoDB的文檔學習索引創建

1. Mongodb的更新方式有?

MongoDB 通過 update 函數與 save 函數來更新集合中的文檔。

2. Mongodb的update更新?

update() 函數用於更新已存在的文檔。
語法格式: db.集合名稱.update( , , upsert:boolean, multi:boolean)
參數說明:
query:update 的查詢條件,類似 sqlupdate 更新語法內 where 後面的內容。
update:update 的對象和一些更新的操作符等,也可以理解爲 sqlupdate 查詢內 set 後面的。
upsert: 可選,這個參數的意思是,如果不存在 update 的記錄,是否插入這個 document, true 爲插入,默認是 false,不插入。
multi : 可選,mongodb 默認是 false,只更新找到的第一條記錄,如果這個參數爲 true, 就把按條件查出來多條記錄全部更新
在 MongoDB 中的 update 是有兩種更新方式,一種是覆蓋更新,一種是表達式更新。 覆蓋更新:顧名思義,就是通過某條件,將新文檔覆蓋原有文檔。 表達式更新:這種更新方式是通過表達式來實現複雜更新操作,如:字段更新、數值計 算、數組操作、字段名修改等

3. Mongodb的更新操作符有哪些 都是什麼意思?

KaTeX parse error: Expected '}', got 'EOF' at end of input: inc 用法:{inc:{field:value}} 作用:對一個數字字段的某個 field 增加 value
KaTeX parse error: Expected '}', got 'EOF' at end of input: set 用法:{set:{field:value}} 作用:把文檔中某個字段 field 的值設爲 value,如果 field 不存在,則增加新的字段並 賦值爲 value。
KaTeX parse error: Expected '}', got 'EOF' at end of input: unset 用法:{unset:{field:1}} 作用:刪除某個字段 field
KaTeX parse error: Expected '}', got 'EOF' at end of input: push 用法:{push:{field:value}} 作用:把 value 追加到 field 裏。注:field 只能是數組類型,如果 field 不存在,會自動 插入一個數組類型
KaTeX parse error: Expected '}', got 'EOF' at end of input: addToSet 用法:{addToSet:{field:value}} 作用:加一個值到數組內,而且只有當這個值在數組中不存在時才增加
KaTeX parse error: Expected '}', got 'EOF' at end of input: …用法:刪除數組內第一個值: {pop:{field:-1}}、刪除數組內最後一個值: {$pop:{field:1}} 作用:用於刪除數組內的一個值
KaTeX parse error: Expected '}', got 'EOF' at end of input: pull 用法:{pull:{field:_value}} 作用:從數組 field 內刪除一個等於_value 的值
KaTeX parse error: Expected '}', got 'EOF' at end of input: pullAll 用法:{pullAll:value_array} 作用:用法同$pull 一樣,可以一次性刪除數組內的多個值
KaTeX parse error: Expected '}', got 'EOF' at end of input: rename 用法:{rename:{old_field_name:new_field_name}} 作用:對字段進行重命名。底層實現是先刪除 old_field 字段,再創建 new_field 字段

4. Mongodb的save()更新?

save()函數的作用是保存文檔,如果文檔存在則覆蓋,如果文檔不存在則新增。save() 函數對文檔是否存在的唯一判斷標準是"_id"系統唯一字段是否匹配。所以使用 save()函數實 現更新操作,則必須提供"_id"字段數據

5. Mongodb刪除文檔的三種方式?

remove函數, remove()函數並不會真正的釋放存儲空間,需要使用 db.repairDatabase()函數來釋放存儲空間。
deleteOne 函數,刪除單個文檔
deleteMany函數,刪除多個文檔

6. Mongodb如何實對文檔的查詢,請舉例說明?

MongoDB 是通過 findOne()和 find()函數來實現文檔查詢的。

7. Mongodb中的投影操作指的是?

代表查詢結果的投影字段名。即查詢結果需要返回哪些字段或不需要 返回哪些字段

8. 條件運算符有哪些 分別什麼意思?

在這裏插入圖片描述

8.1and和or如何聯合使用?
查詢集合中title爲test6以及size等於500或者size小於400的文檔:
在這裏插入圖片描述

9. 每頁顯示5條查看第5頁的數據如何實現?

在 MongoDB 中,使用函數 limit()和 skip()來實現分頁數據查詢
db.dev.find({條件}).skip(20).limit(5)

10. 如何實現排序,兩個條件如何排序 如年齡一致按照分數排序?

在 MongoDB 中使用 sort() 方法對數據進行排序,sort() 方法可以通過參數指定排序 的字段,並使用 1 和 -1 來指定排序的方式,其中 1 爲升序排列,而 -1 是用於降序排列
db.dev.find({條件}).sort({age:1,score:1})

11. 如何創建索引?

MongoDB 中使用 createIndex 或 ensureIndex 函數來創建索引。ensureIndex 函數是 1.8 版本後增加的創建索引函數,是官方推薦使用的函數。createIndex 函數在部分高版本 MongoDB 中已被移除,不推薦使用

12. 如何查看索引?

在 MongoDB 中使用 getIndexes()函數查看集合的索引信息
在 MongoDB 中使用 getIndexKeys()函數查看集合的索引鍵
在 MongoDB 中使用 getIndexSpecs()函數查看索引詳情
在 MongoDB 中使用 totalIndexSize()函數查看集合中索引的大小

13. 刪除索引有幾種方式,分別舉例說明?

在 MongoDB 中使用 dropIndex()函數刪除指定的索引
在 MongoDB 中使用 dropIndexes()函數刪除集合中的所有自建索引。此函數只刪除自建 索引,不會刪除 MongoDB 創建的_id 索引

14. 索引類型有哪些,有何作用?

MongoDB 支持多種類型的索引,包括單字段索引、複合索引、多 key 索引、文本索引 等,每種類型的索引有不同的使用場合
單字段索引:其能加速對字段的各種查詢請求
交叉索引:爲一個集合的多個字段分別建立索引,在查詢的時候通過多個字段作爲查詢條件,這種情況稱爲交叉索引。 交叉索引的查詢效率較低,在使用時,當查詢使用到多個字段的時候,儘量使用複合索引,而不是交叉索引
複合索引:是 SingleFieldIndex 的升級版本,它針對多個字段聯合創建索引,先按第一個 字段排序,第一個字段相同的文檔按第二個字段排序,依次類推。複合索引能滿足的查詢場景比單字段索引更豐富,不光能滿足多個字段組合起來的查詢,也能滿足所以能匹配符合索引前綴的查詢
多key索引:當索引的字段爲數組時,創建出的索引稱爲多 key 索引,多 key 索引會爲數組的每個元素建立一條索引
唯一索引 (uniqueindex):保證索引對應的字段不會出現相同的值,比如_id 索引就是唯一索引
部分索引只爲集合中那些滿足指定的篩選條件的文檔創建索引

15. 使用索引需要注意什麼?

索引雖然加快了查詢速度,但是索引也是有代價的,索引文件本身要消耗存儲空間,同時索引會加重插入、刪除和修改記錄時的負擔,另外,數據庫在運行時也要消耗資源維護索引,因此索引並不是越多越好

16. 索引限制指的是?

1額外開銷
每個索引佔據一定的存儲空間,在進行插入,更新和刪除操作時也需要對索引進行操作。 所以,如果你很少對集合進行讀取操作,建議不使用索引。
2內存使用
由於索引是存儲在內存(RAM)中,你應該確保該索引的大小不超過內存的限制。 如果索引的大小大於內存的限制,MongoDB 會刪除一些索引,這將導致性能下降。
3查詢限制
索引不能被以下的查詢使用: 正則表達式(最左匹配除外)及非操作符,如 nin,nin,not, 等。 算術運算符,如 $mod, 等。 所以,檢測你的語句是否使用索引是一個好的習慣,可以用 explain 來查看。
4最大範圍
集合中索引不能超過 64 個 索引名的長度不能超過 128 個字符 一個複合索引最多可以有 31 個字段

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章