mongo 正則及條件查詢

2021-08-30 17:48:43 字數 2199 閱讀 4387

db.collection.find( );等效於下面這種寫法

db.collection.find( } );

以上是個簡單的應用。

引數介紹:

option ***** description

引數 i *****= 加了這個引數,表示不區分大小寫

引數 m ***** 個人理解這個引數是用來匹配value中有換行符(\n)的情形。

還有乙個情形是:匹配規則中使用了錨,所謂的錨就是^ 開頭, $ 結束

比如:db.products.find( } )

上面匹配規則的意思就是匹配description欄位的value值中,以大寫s開頭的value值。

匹配後結果是:

可以看出,第二條記錄中descriptio的值包含\n換行字元,而他之所以能匹配出來就是因為

新增了m 引數。

假設沒有新增m引數,語句就是

db.products.find( }

此時匹配結果為

再比如我們連錨都不寫也就是去掉^符合,語句變成

db.products.find( } )

此時結果為:

此時可以分析出m引數的使用場景:

應該是為了匹配欄位value值中以某個字元開頭(^),或者是某個字元結束($).即便value中包含換行符(\n)也能匹配到。

從上例最後例子看出,m引數應該是和錨同時使用才有意思,否則直接去匹配也能匹配出來。說明m是在特殊需求下才使用的!

引數 s ***** 允許點字元(.)匹配所有的字元,包括換行符。

比如語句:

db.products.find( } )

匹配value中包含m且之後為任意字元包括換行符並且還包含line字元的字串。不區分大小寫

結果為:

如果不加s引數時,語句為:

db.products.find( } )

結果為:

引數 x *****= 官網的大意是忽視空白字元

允許在查詢中使用聚合操作

官方例子1:

db.monthlybudget.find( } )

查詢結果為:

找出spent大於budget的所有值

官方例子2:

db.supplies.find( ,

then: ,

else: }},

5 ] }

} )查詢結果為:

官方例子:

db.inventory.find( } )

查詢結果(找出除以4餘數為0):

$mod 陣列的引數為2個,空、少或者多都會報錯

mongodb支援對文字內容執行文字搜尋操作,其提供了索引text index和查詢操作$text來完成文字搜尋功能。下面我們通過乙個簡單的例子來體驗一下mongodb提供的全文檢索功能。

1.新建blogs collection,並插入如下的document。

db.blogs.insert()

db.blogs.insert()

db.blogs.insert()

2.建立text index。

只有擁有text index的collection才支援全文檢索;

每個collection只能擁有乙個text index;

text index可以包含任何的string型別、string陣列型別的字段;

text index可以包含多個字段;

執行如下新建text index的語句

db.blogs.ensureindex(})

4.查詢包含index或者operators的記錄

db.blogs.find(})

5.查詢包含mongodb但是不包含search的記錄

db.blogs.find(})

6.查詢包含text search片語的記錄

db.blogs.find(})

7.使用權重排序搜尋結果

預設情況下全文檢索返回的結果是無序的;

每次全文檢索mongodb會針對文件的匹配程度為每個document計算乙個相對的分數;

mongodb提供了$meta textscore來支援全文檢索的分數

db.blogs.find( }, } ).sort(})

mongo支援表示式條件查詢

通過相關表示式,如 concat,substr,tolower,toupper 等,對mongo進行操作 並且可以根據操作結果進行條件判斷。10.11.2.supported aggregation operations 此處以 substr為例。document collection test p...

mongo常用查詢

複雜查詢 and or lte,gte,and lt 逗號表示and,lt小於寫在值當中 查詢例項 找到含有指定資料文件 查詢條件spcode有1個字元長度的文件 db.spgoods.find 查詢條件spcode有1 6個字元長度的文件 db.spgoods.find 更新一批資料 db.spg...

SQL查詢及匹配條件

1建立測試表 1 在test庫中建立stu info表 以root使用者登入mysql伺服器 開啟test庫 建立stu info表,包括name gender age三個字段 確認表結構 2 插入記錄 確認stu info表的所有記錄內容 2 常用的表記錄統計函式 查詢stu info表一共有多少...