国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找

這篇具有很好參考價(jià)值的文章主要介紹了MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?阿丹:

? ? ? ? 之前研究了MongoDB的基礎(chǔ)增刪改查。在學(xué)會(huì)基礎(chǔ)的數(shù)據(jù)庫(kù)增刪改查肯定是不夠的。這個(gè)時(shí)候就涉及到了數(shù)據(jù)庫(kù)搜索的時(shí)候的效率。需要提高數(shù)據(jù)的搜索效率。

MongoDB索引

? ? ? ? 在所以數(shù)據(jù)庫(kù)中如果沒有數(shù)據(jù)索引的時(shí)候。如果需要查找到一些數(shù)據(jù)。都會(huì)去主動(dòng)掃描所有可能存在的集合。引入了索引概念就能很高效的使用索引來限制必須在集合中去搜索的文檔數(shù)。

? ? ? ? 索引的概念:

? ? ? ? 索引是特殊數(shù)據(jù)集,用于存儲(chǔ)集合數(shù)據(jù)的一部分。由于數(shù)據(jù)是部分?jǐn)?shù)據(jù)。因此讀取該數(shù)據(jù)變得更加容易。此部分集存儲(chǔ)特定字段的值或按字段值排序的一組字段。

對(duì)索引的影響:

  • 如何創(chuàng)建索引:createIndex()
  • 如何查找索引:getindexes()
  • 如何刪除索引:dropindex()

索引的影響

? ? ? ? 從上面的介紹可以看到固然索引對(duì)于數(shù)據(jù)庫(kù)很友好對(duì)于性能的提升也很友好,但是索引太多會(huì)減少其他操作。例如插入刪除以及其他更新操作。反而得不償失。

? ? ? ? 如果語句文檔進(jìn)行頻繁的刪除等更新操作,如果對(duì)于索引的這些字段也進(jìn)行了影響。那么就需要對(duì)這些索引也進(jìn)行更正改正。

? ? ? ? 也就是說本對(duì)于查詢來說是很友好的,但是如果涉及到了索引字段的值修改就要修改MongoDB的兩個(gè)內(nèi)容階段。

? ? ? ? 所以在索引的選擇上要選擇不經(jīng)常更新的字段以及相對(duì)重要的字段來作為索引。

?

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

如上圖所示;

? ? ? ? id與code為不經(jīng)常變更的數(shù)據(jù)字段所以將這兩個(gè)字段可以設(shè)置為索引。方便我們進(jìn)行搜索。

如何創(chuàng)建索引:createIndex()

在MongoDB中通過createindex的方法來創(chuàng)建

我先使用如下語句來進(jìn)行創(chuàng)建了一個(gè)ExampleDB集合,然后將3個(gè)文檔存放到了這個(gè)集合中去。

var Example = [
	{
		"_id":2,
		"adncode":1,
		"員工姓名":"帥丹"
	},
	{
		"_id":3,
		"adncode":2,
		"員工姓名":"大力丹"
	},
	{
		"_id":4,
		"adncode":1,
		"員工姓名":"庫(kù)庫(kù)丹"
	}
]
db.ExampleDB.insert(Example)

?在這個(gè)文檔的格式中我們就可以使用“_id”和“adncode”作為索引。

那么我們接下來使用createindex方法創(chuàng)建索引

#創(chuàng)建索引
db.ExampleDB.createIndex({adncode:1})

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

代碼解釋:

???????這個(gè)語句是用于在ExampleDB數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)索引,索引的名稱是adncode,索引的列是第一列。

????????具體來說,db.ExampleDB.createIndex({adncode:1})?是對(duì)名為ExampleDB的數(shù)據(jù)庫(kù)中的adncode列創(chuàng)建索引,其中adncode是索引的名稱,1表示該列是第一列。通過創(chuàng)建索引,可以提高查詢adncode列的數(shù)據(jù)的效率。

????????參數(shù)“ 1”表示使用“ adncode”字段值創(chuàng)建索引時(shí),應(yīng)按升序?qū)ζ溥M(jìn)行排序。請(qǐng)注意,這與_id字段(ID字段用于唯一標(biāo)識(shí)集合中的每個(gè)文檔)不同,后者由MongoDB在集合中自動(dòng)創(chuàng)建?,F(xiàn)在,將按照adncode而不是_id字段對(duì)文檔進(jìn)行排序。

????????參數(shù)為1表示升序排序,而參數(shù)為-1表示倒序排序。在MongoDB中,索引的方向可以是單向(1或-1)或雙向({-1,1}或{1,-1}),分別表示從左到右或從右到左的順序。在創(chuàng)建索引時(shí),可以根據(jù)實(shí)際需求選擇適當(dāng)?shù)牡姆较蚝土衼韯?chuàng)建索引,以提供更快速的文件訪問和查詢性能??傊?,索引的方向和參數(shù)可以根據(jù)具體的需求進(jìn)行選擇和調(diào)整,以實(shí)現(xiàn)最佳的性能和查詢效果。

?創(chuàng)建成功返回語句解釋:

  1. numIndexesBefore:1表示運(yùn)行命令之前索引中存在的字段值(集合中的實(shí)際字段)的數(shù)量。請(qǐng)記住,每個(gè)集合都有_id字段,該字段也算作索引的Field值。由于_id索引字段在最初創(chuàng)建時(shí)是集合的一部分,因此numIndexesBefore的值為1。
  2. numIndexesAfter:2表示運(yùn)行命令后索引中存在的字段值的數(shù)目。
  3. 此處的“ ok:1”輸出指定操作已成功,并且新索引已添加到集合中。

上面的代碼顯示了如何基于一個(gè)字段值創(chuàng)建索引,但是也可以基于多個(gè)字段值創(chuàng)建索引。

?創(chuàng)建索引語句參數(shù)講解

db.ExampleDB.createIndex(keys, options)是MongoDB中用于創(chuàng)建索引的語句。其中的keys參數(shù)指定要?jiǎng)?chuàng)建索引的鍵,可以是一個(gè)鍵文檔(如{adncode: 1})或一個(gè)包含多個(gè)鍵的數(shù)組(如[adncode, code2])。options參數(shù)用于指定索引的選項(xiàng)和行為,它是一個(gè)包含多個(gè)選項(xiàng)的文檔。

以下是一些常用的選項(xiàng)和它們的作用:

  1. background:指定索引是否在后臺(tái)創(chuàng)建,這樣可以在創(chuàng)建索引時(shí)繼續(xù)其他操作。默認(rèn)情況下,索引是在前臺(tái)創(chuàng)建的,這意味著其他操作會(huì)被阻塞。
  2. unique:指定索引是否是唯一的。如果設(shè)置為true,則在文檔中不允許出現(xiàn)重復(fù)的索引鍵值。
  3. dropDups:在創(chuàng)建索引時(shí)是否刪除重復(fù)的文檔。如果設(shè)置為true,則在創(chuàng)建索引時(shí)將刪除所有重復(fù)的文檔。
  4. name:索引的名稱,用于標(biāo)識(shí)和引用該索引。
  5. expireAfterSeconds:指定文檔過期的時(shí)間,以秒為單位。如果設(shè)置為一個(gè)正數(shù),則在該時(shí)間后,文檔將被刪除。

在使用這個(gè)語句時(shí),基本的語法是:

db.collection.createIndex(keys, options)

其中,keys參數(shù)可以根據(jù)需要設(shè)置為一個(gè)鍵文檔或一個(gè)包含多個(gè)鍵的數(shù)組。options參數(shù)是可選的,可以根據(jù)需要設(shè)置為一個(gè)包含選項(xiàng)的文檔。

需要注意的是,在創(chuàng)建索引時(shí),應(yīng)該根據(jù)實(shí)際需求和性能要求選擇合適的類型和參數(shù)。索引的創(chuàng)建會(huì)增加存儲(chǔ)空間和計(jì)算開銷,并且在修改文檔時(shí)也會(huì)受到影響。因此,應(yīng)該仔細(xì)評(píng)估索引的需求和影響,并選擇適當(dāng)?shù)牡倪x擇和參數(shù)。

一次性創(chuàng)建多個(gè)字段索引

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

代碼解釋:

????????現(xiàn)在,createIndex方法考慮多個(gè)字段值,這些值現(xiàn)在將導(dǎo)致根據(jù)“ Employeeid”和“ EmployeeName”創(chuàng)建索引。Employeeid:1和EmployeeName:1指示應(yīng)在這2個(gè)字段值上創(chuàng)建索引,而:1則指示索引應(yīng)按升序排列。

如何查找索引:使用getindexes()方法

#查找索引
db.ExampleDB.getIndexes()

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

?代碼解釋:

  1. getIndexes方法用于查找集合中的所有索引。
  2. 輸出返回一個(gè)文檔,該文檔僅顯示集合中有2個(gè)索引,即_id字段,另一個(gè)是Employee id字段。:1表示索引中的字段值是按升序創(chuàng)建的。

如何刪除索引:dropindex()

通過使用dropindex方法在MongoDB中刪除索引


#刪除索引
db.ExampleDB.dropIndex({adncode:1})

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

代碼解釋:

  1. dropIndex方法采用必需的字段值,該值需要從索引中刪除。
  2. 返回結(jié)果值nIndexesWas:2表示在運(yùn)行命令之前索引中存在的字段值的數(shù)目。請(qǐng)記住,每個(gè)集合都有_id字段,該字段也算作索引的Field值。
  3. ok:1輸出指定該操作成功,并且從索引中刪除了“ adncode”字段。
  4. 要一次刪除集合中的所有索引,可以使用dropIndexes命令。

刪除所有索引

db.ExampleDB.dropIndexes()

代碼解釋

  1. dropIndexes方法將刪除除_id索引以外的所有索引。

小總結(jié):

  • 定義索引對(duì)于快速高效地搜索集合中的文檔非常重要。
  • 可以使用createIndex方法創(chuàng)建索引。可以僅在一個(gè)字段或多個(gè)字段值上創(chuàng)建索引。
  • 可以使用getIndexes方法找到索引。
  • 可以通過將dropIndex用于單個(gè)索引或?qū)ropIndex用于刪除所有索引來刪除索引。

在MongoDB中使用正則表達(dá)式(Regex)-爬蟲可用

正則表達(dá)式基本概念:

? ? ? ? 正則表達(dá)式用于模式匹配,基本上用于在文檔中發(fā)現(xiàn)和匹配字符串,以及一些校驗(yàn)規(guī)則。

通過正則表達(dá)式可以幫助我們?cè)谖臋n中快速的找到和定位到相應(yīng)的字符串。

使用$regex運(yùn)算符進(jìn)行模式匹配

MongoDB中的regex運(yùn)算符用于在集合中搜索特定的字符串。

比如在上面我們向目標(biāo)集合中添加的文檔們,我現(xiàn)在想要查詢有“丹”字出現(xiàn)的文檔。我就可以使用正則表達(dá)式類指定搜索條件。

#使用正則表達(dá)式來制定搜索條件
db.ExampleDB.find(
	{
		員工姓名 : {$regex : "丹"}
	}
).forEach(printjson)

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

?代碼解釋:

? ? ? ? 在這里,查找了所有帶“丹”字符的員工姓名。因此使用$ regex運(yùn)算符來定義“ 丹”的搜索條件,也能從結(jié)果看到返回了包含對(duì)應(yīng)漢字的文檔。

使用正則表達(dá)式中的語法對(duì)查詢規(guī)則進(jìn)行精準(zhǔn)描述

規(guī)則“^”

比如我們可以使用在匹配規(guī)則字符串前添加“^”來保證匹配的時(shí)候前面是沒有字符的。

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

可從結(jié)果看到“^”符號(hào)的作用就是規(guī)定在查找的時(shí)候關(guān)鍵字前面不能有其他字符。

?規(guī)則“$”

還可以使用$符號(hào)規(guī)則來規(guī)定在匹配字符的后面不允許有其他字符

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

?從兩次的結(jié)果可以看到在加上$符號(hào)后,在關(guān)鍵字后面如果有字符就不在參與搜索了。

其他規(guī)則
字符匹配

元字符?.?可以匹配除換行符之外的任何字符。

例如:. "?可以匹配任何字符串,包括空字符串。

字符集合

用花括號(hào)?[]?表示一個(gè)字符集合,可以匹配其中任意一個(gè)字符。

例如:[abc]?可以匹配字符?a、b?或?c。

字符范圍

用連字符?-?表示字符范圍,可以匹配一定范圍內(nèi)的字符。

例如:[a-z]?可以匹配小寫字母。

否定字符集合

用花括號(hào)?[^]?表示一個(gè)否定字符集合,可以匹配除了其中指定的字符之外的任何字符。

例如:[^abc]?可以匹配除了字符?a、b?或?c?之外的任何字符。

量詞

量詞用于匹配前面的元素出現(xiàn)的次數(shù)。常見的量詞包括:

  • *?表示前面的元素可以出現(xiàn) 0 次或多次。
  • +?表示前面的元素可以出現(xiàn) 1 次或多次。
  • ??表示前面的元素可以出現(xiàn) 0 次或 1 次。
  • {n}?表示前面的元素出現(xiàn) n 次。
  • {n,}?表示前面的元素至少出現(xiàn) n 次。
  • {n,m}?表示前面的元素至少出現(xiàn) n 次,但不超過 m 次。

例如:a*?可以匹配 0 個(gè)或多個(gè)字母?a

轉(zhuǎn)義字符

在正則表達(dá)式中,一些特殊字符需要使用反斜杠?\?進(jìn)行轉(zhuǎn)義,例如?\d?表示數(shù)字、\s?表示空白字符等。

例如:\d+?可以匹配一個(gè)或多個(gè)數(shù)字。

與$ options進(jìn)行模式匹配

使用正則表達(dá)式運(yùn)算符時(shí),還可以使用$ options關(guān)鍵字提供其他選項(xiàng)。假設(shè)我們想查找所有在目標(biāo)集合中中帶有英文字符的文檔,而不管它是區(qū)分大小寫還是不區(qū)分大小寫。如果需要這樣的結(jié)果,那么我們需要使用不區(qū)分大小寫參數(shù)的$ options。

現(xiàn)在,我們運(yùn)行與上一個(gè)相同的查詢,我們將永遠(yuǎn)不會(huì)在結(jié)果中看到帶有大寫的英文的文檔。為了確保將其包含在結(jié)果集中,我們需要添加$ options“ I”參數(shù)。

db.Employee.find({EmployeeName:{$regex: “Gu”,$options:’i’}}).forEach(printjson)

代碼解釋:

1、帶“ I”參數(shù)(表示不區(qū)分大小寫)的$ options指定無論我們發(fā)現(xiàn)字母是小寫還是大寫,我們都希望執(zhí)行搜索

2、結(jié)果表明,即使一個(gè)文檔具有大寫的目標(biāo)字母,該文檔仍會(huì)顯示在結(jié)果集中

沒有regex運(yùn)算符的模式匹配

MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找,mongodb,mongodb,mysql,數(shù)據(jù)庫(kù)

?在這里沒有使用regex運(yùn)算符,也可以正常使用正則表達(dá)式匹配操作

#使用正則表達(dá)式來制定搜索條件
db.ExampleDB.find(
	{
		員工姓名 :  /庫(kù)庫(kù)丹/
	}
).forEach(printjson)

說明:

? ? ? ? “//”在MongoDB中這個(gè)選項(xiàng)就說明在這些定界符中指定了搜索的條件。

具體正則表達(dá)式如何書寫可以根據(jù)上面提供過的文檔來書寫。文章來源地址http://www.zghlxwxcb.cn/news/detail-625192.html

到了這里,關(guān)于MongoDB文檔-進(jìn)階使用-MongoDB索引-createindex()與dropindex()-在MongoDB中使用正則表達(dá)式來查找的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包