文字操作符其實有很多種類可以講,像是大小寫轉換、找特定字在文字中的位置、將字串合併等等,就讓我們一一做舉例。
首先假設我們有一些商品資料
如果我們要針對商品名稱,進行大小寫的轉換,這時候可以使用$toUpper
和$toLower
這兩個操作符。
這樣轉換有一個好處是,當我們再寫商品搜尋功能給顧客使用時,通常會自動幫顧客轉換大小寫,這樣容易使用關鍵字搜尋到更多的商品,實際寫法如下。
ps.必須注意的是,除了商品名稱要換成小寫以外,關鍵字也要透過toLowerCase()
(JS語法)轉換成小寫,這樣經過$match
的比對才會是相同的。
另外提一下,其實有一個操作符$regexFind
,可以讓使用者用正規表達搜尋文字資料,不過因為本人對正規表達式不太熟練,因此就不多做介紹了。
接下來用兩個文字,來示範如何用$concat
將兩個文字合併再一起,以及使用$indexOfBytes
找尋找特定字母,在文字中的位置。
其中$indexOfBytes
的用法,跟之前在陣列操作符有介紹到的$indexOfArray
很像,都是後面接一個陣列,依序帶入文字、搜尋的關鍵字、開始搜尋的位置、結束搜尋的位置,最後會傳一個數值,如果是-1代表搜尋不到,如果是其它數值,就代表是關鍵字所在的位置。
最後要來介紹一下$literal
這個操作符,它的用途有點特別,可以讓特定字串不進行解析,避免文字中某些關鍵字被MongoDB當成指令或變數。
不曉得大家有沒有發現,MongoDB通常都會用$
來區分是變數,還是一般的文字,這時候如果你剛好想寫金錢的符號$
,後面接數字代表商品價格,如果沒有特別使用$literal
,就有可能會出錯。
假設現在商品因為在美國販賣,所以以美金計價,資料如下(因為舉例方便都是賣56美金)
如果我們想確認商品是不是賣56美金,可以用以下指令
ps.如果對文字操作符有興趣的話,可以參考官方文件,有更詳細的說明