各項(xiàng)

_id字段

5a604e62 efe04a 6f4f a985e1
4字節(jié)時(shí)間戳 機(jī)器ID 進(jìn)程ID 計(jì)數(shù)器

bson

bson是mongodb中用來(lái)標(biāo)示文檔的二進(jìn)制格式,它既是存儲(chǔ)格式,也是命令格式。所有文檔都以bson存儲(chǔ)在磁盤(pán)上,所有的查詢和命令都用bson文檔來(lái)指定。

聚合命令限制

distinct 和group,它們返回的結(jié)果集不能超過(guò)16M。16M的限制并不是這些命令本身所強(qiáng)加的閥值,這是所有的初始查詢結(jié)果的大小。如果distinct和group處理不了你的集合結(jié)果集,那么就只能使用map-reduce代替了,它的結(jié)果可以保存在集合中的非內(nèi)聯(lián)返回。

原子文檔處理

我們知道m(xù)ongodb不善于處理事物,但要是用戶確實(shí)需要需要進(jìn)行查詢和更新同時(shí)操作怎么辦呢? 有一個(gè)工具你肯定不想錯(cuò)過(guò),那就是mongodb的findAndModify命令。該命令允許對(duì)文檔進(jìn)行原子性更新,并在同一次調(diào)用中返回。

對(duì)數(shù)組使用$unset

請(qǐng)注意在單個(gè)數(shù)組元素上使用$unset的結(jié)果可能與你設(shè)想的不一樣。其結(jié)果只是將元素的值設(shè)置為null,而非刪除整個(gè)元素。要想徹底刪除某個(gè)數(shù)組元素,可以用$pull 和$pop操作符。

$addToSet和$push的區(qū)別

該兩者的功能都是給數(shù)組添加一個(gè)值。但是兩者之間有區(qū)別,$addToSet要添加的值如果不存在才進(jìn)行添加操作,但是push只添加一個(gè)值;例如:

tags = [“tools”,”garden”]

如果執(zhí)行db.collection.update({},{$push:{tag:tools}}) 結(jié)果就是 [“tools”,”garden”,“tools”]

如果執(zhí)行db.collection.update({},{$addToSet:{tag:tools}}) 結(jié)果不變

稀疏索引創(chuàng)建

在稀疏索引中只會(huì)出現(xiàn)被索引鍵有值的文檔,如果想創(chuàng)建稀疏索引,指定{sparse:true}就可以了。例如:

Db.product.ensureIndex({sku:1},{unique:true,sparse:true})

Sku可能存在為null的文檔。

聲明索引時(shí)要小心

由于創(chuàng)建索引比較簡(jiǎn)單,所以很容易在無(wú)意間創(chuàng)建索引,如果數(shù)據(jù)集很大的話,構(gòu)建會(huì)花費(fèi)很長(zhǎng)的時(shí)間。并且沒(méi)辦法中種植。同時(shí)創(chuàng)建索引時(shí)候最好先排序這樣更加高效。

用Explain(true)詳細(xì)查詢執(zhí)行計(jì)劃

用戶db.collection.find(condition).explain(true)

樂(lè)觀鎖

樂(lè)觀鎖就是并發(fā)控制,這項(xiàng)技術(shù)保證在無(wú)需鎖定記錄的情況下對(duì)器進(jìn)行徹底更新。要理解它,最簡(jiǎn)單的辦法就是想像一個(gè)wifi,有多個(gè)用戶可以同時(shí)編輯一個(gè)頁(yè)面。但你肯定不希望用戶編輯并更新一個(gè)過(guò)期的頁(yè)面,這是就可以使用樂(lè)觀鎖協(xié)議,當(dāng)用戶試圖保存他們更改的時(shí)候,會(huì)在更新操作中增加一個(gè)時(shí)間戳,如果該值比這個(gè)頁(yè)面最近保存的版本舊,就不讓用戶更新。

這個(gè)在mongodb 執(zhí)行$inc中用到

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

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

  • 學(xué)習(xí)《MongoDB 權(quán)威指南·第2版》的筆記,結(jié)合 MongoDB 官方最新文檔(v3.6),簡(jiǎn)單記錄一些概念、...
    小魚(yú)愛(ài)小蝦閱讀 6,207評(píng)論 0 5
  • [TOC]未完更新中... 1. MongoDB安裝及配置 官網(wǎng)下載地址 安裝msc文件,現(xiàn)在3.4的版本,有了m...
    BigJeffWang閱讀 2,363評(píng)論 0 49
  • 1. MongoDB 簡(jiǎn)介 MongoDB是一個(gè)可擴(kuò)展的高性能,開(kāi)源,模式自由,面向文檔的NoSQL,基于分布式文...
    rhlp閱讀 1,222評(píng)論 0 3
  • 前兩天小姨給我看她和表弟的照片,說(shuō)朋友評(píng)價(jià)看起來(lái)像姐弟倆。說(shuō)這話的時(shí)候小姨眼睛清清亮亮,止不住溢出來(lái)的笑...
    渡島閱讀 341評(píng)論 0 0
  • 隔著手機(jī)屏幕,我都能感受到阿七的心累,那是一種夾雜著無(wú)奈、委屈和憤怒的心累。 就在昨晚,阿七突然懷念起一個(gè)許久不聯(lián)...
    花下人閱讀 1,755評(píng)論 0 6

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