Mongodb通配符文本索引的用法詳解
學(xué)習(xí)mongodb,體會(huì)mongodb的每一個(gè)使用細(xì)節(jié),歡迎閱讀威贊的文章。這是威贊發(fā)布的第99篇mongodb技術(shù)文章,歡迎瀏覽本專(zhuān)欄威贊發(fā)布的其他文章。如果您認(rèn)為我的文章對(duì)您有幫助或者解決您的問(wèn)題,歡迎在文章下面點(diǎn)個(gè)贊,或者關(guān)注威贊。謝謝。威贊文章都是結(jié)合官方文檔,翻譯整理而來(lái),并對(duì)每個(gè)知識(shí)點(diǎn)的描述都認(rèn)真思考和實(shí)踐,對(duì)難以理解的地方,使用簡(jiǎn)單容易理解的方式進(jìn)行闡述。
通配符索引為Mongodb靈活的數(shù)據(jù)結(jié)構(gòu),提供了高效查詢(xún)的解決方案。但Mongodb文檔中明確的提出來(lái),通配符索引和通配符文本索引,是兩個(gè)完全不同的索引。那通配符文本索引到底是什么樣的方式來(lái)運(yùn)作,本文繼續(xù)研究官方文檔,來(lái)歸納總結(jié)通配符文本索引的介紹和用法。
概述
用戶(hù)可以為集合中多個(gè)文本字段創(chuàng)建一個(gè)文本索引。這種集合多個(gè)字段的索引,就是通配符文本索引。通配符文本索引支持未知字段,可變字段和動(dòng)態(tài)生成字段的文本查詢(xún)。
使用通配標(biāo)識(shí)符$**和索引類(lèi)型text來(lái)構(gòu)建通配符文本索引。
db.<collection>.createIndex({"$**": "text"})
通配符索引和通配符文本索引,是不同的索引。通配符文本索引支持使用$text操作符的查詢(xún), 而通配符索引不支持使用該操作符查詢(xún)。
當(dāng)用戶(hù)在集合中添加通配符文本索引后,向集合中插入數(shù)據(jù)或者數(shù)據(jù)更新時(shí),在通配符文本索引中的數(shù)據(jù)都會(huì)更新。因此,通配符文本索引對(duì)數(shù)據(jù)插入和更新有負(fù)面的影響。Mongodb建議,僅在字段不確定或未來(lái)字段可能發(fā)生變化時(shí),使用通配符文本索引。通配符文本索引于其他索引的工作方式不一致。當(dāng)集合中包含了過(guò)多隨意的字段導(dǎo)致創(chuàng)建索引困難時(shí),要考慮重新定義數(shù)據(jù)的結(jié)構(gòu)。
應(yīng)用
創(chuàng)建blog集合并插入數(shù)據(jù)
db.blog.insertMany([ { "_id": 1, "content": "This is a blog post about MongoDB", "about": "MongoDB", "keywords": [ "MongoDB", "database", "NoSQL" ] }, { "_id": 2, "content": "This is a blog post about MongoDB and Python", "about": "MongoDB", "keywords": [ "MongoDB", "Python" ] }, { "_id": 3, "content": "This is a blog post about NoSQL databases", "about": "NoSQL", "keywords": [ "NoSQL", "database" ] } ])
構(gòu)建通配符文本索引
db.blog.createIndex({"$**": "text"})
使用通配符索引查詢(xún)
db.blog.find({$text: {$search: "MongoDB"}})
查看執(zhí)行計(jì)劃
匹配多個(gè)字符串
db.blog.find({$text: {$search: "MongoDB NoSQL"}})
到此這篇關(guān)于Mongodb通配符文本索引的文章就介紹到這了,更多相關(guān)Mongodb通配符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP庫(kù) 查詢(xún)Mongodb中的文檔ID的方法
這篇文章主要介紹了PHP庫(kù) 查詢(xún)Mongodb中的文檔ID的方法的相關(guān)資料,需要的朋友可以參考下2016-10-10centos7防火墻導(dǎo)致java程序訪(fǎng)問(wèn)mongodb3.0.1時(shí)報(bào)錯(cuò)的問(wèn)題分析
這篇文章主要介紹了centos7防火墻導(dǎo)致java程序訪(fǎng)問(wèn)mongodb3.0.1時(shí)報(bào)錯(cuò)的問(wèn)題分析,需要的朋友參考下2017-01-01解決MongoDB 排序超過(guò)內(nèi)存限制的問(wèn)題
最近小編遇到這樣的問(wèn)題:對(duì)集合執(zhí)行一個(gè)大排序操作(如聚合),出現(xiàn)以下錯(cuò)誤:(測(cè)試版本:MongoDB 3.0.6),怎么快速解決此問(wèn)題呢?下面小編給大家分享MongoDB 排序超過(guò)內(nèi)存限制的解決方法,一起看看吧2017-07-07解決MongoDB6.0報(bào)錯(cuò):"mongo"不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件
這篇文章主要給大家介紹了關(guān)于解決MongoDB6.0報(bào)錯(cuò):"mongo"不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05MongoDB在不同主機(jī)間復(fù)制數(shù)據(jù)庫(kù)和集合的教程
MongoDB自帶了clone一族JavaScript函數(shù)來(lái)進(jìn)行數(shù)據(jù)的復(fù)制,這里我們總結(jié)了MongoDB在不同主機(jī)間復(fù)制數(shù)據(jù)庫(kù)和集合的教程,列舉出了一些主從復(fù)制操作中常用的重要函數(shù):2016-07-07Mongodb使用索引進(jìn)行查詢(xún)優(yōu)化的操作方法
為集合建立合適的索引,能夠有效的減少查詢(xún)操作時(shí)掃描數(shù)據(jù)的數(shù)量 ,從而提高查詢(xún)效率,簡(jiǎn)化了mongodb內(nèi)部查詢(xún)工作,這篇文章主要介紹了Mongodb使用索引進(jìn)行查詢(xún)優(yōu)化的操作方法,需要的朋友可以參考下2024-06-06