最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB創(chuàng)建和查詢視圖的方式

 更新時(shí)間:2023年12月26日 11:53:00   作者:威贊  
本文整理mongodb的官方文檔,介紹mongodb的視圖創(chuàng)建和查詢,在Mongodb中,允許使用兩種方式來(lái)創(chuàng)建視圖,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

本文整理mongodb的官方文檔,介紹mongodb的視圖創(chuàng)建和查詢。

Mongodb中,允許使用兩種方式來(lái)創(chuàng)建視圖。

//使用db.createCollection()來(lái)創(chuàng)建視圖
db.createCollection(
  "<viewName>",
  {
    "viewOn": "<source>",
    "pipeline": [<pipeline>],
    "collation": {<collation>}
  }
)
//使用db.createView()來(lái)創(chuàng)建視圖
db.createView(
  "<viewName>",
  "<source>",
  [<pipeline>],
  {
    "collation": { <collation>}
  }
)

限制和注意事項(xiàng)

  • 創(chuàng)建視圖時(shí),要?jiǎng)?chuàng)建的視圖需要與依賴的集合在同一個(gè)數(shù)據(jù)庫(kù)。
  • 在普通視圖的定義的管道中中,不能出現(xiàn)$out和$merge過(guò)程。在$lookup或$facet過(guò)程中也不能出現(xiàn)$merge和$out。
  • 視圖創(chuàng)建后,不可以被重新命名,不可以修改視圖名稱。
  • 視圖中,不能夠使用mapReduce(), $text, $geoNear等命令。
  • Mongodb查看集合的操作,如db.getCollectionInfos()和db.getCollectionNames()命令,結(jié)果集中會(huì)包含用戶定義的視圖信息。
  • 視圖的定義對(duì)用戶是可見的,使用命令db.getCollectionInfos()或通過(guò)explain查詢執(zhí)行計(jì)劃時(shí),打印出來(lái)的信息會(huì)包含視圖的定義信息。因此,用戶需要在定義視圖中避免直接引用敏感字段和字段值。
  • 使用AtlasUI,用戶只能創(chuàng)建物化視圖。
  • 使用find()命令查詢視圖中,不支持操作符$, $elemMatch, $slice, $meta
  • 使用db.collection.find()方法查詢視圖時(shí),filter, projection, sort, skip, limit等查詢方法,轉(zhuǎn)化成等價(jià)的集合管道查詢方法。
  • Mongodb將客戶端視圖查詢條件與視圖定義中的管道操作一起進(jìn)行查詢優(yōu)化
  • 查詢優(yōu)化器不會(huì)改變視圖的查詢結(jié)果,只是重新編排管道中查詢操作的順序來(lái)提高效率。
  • 使用db.createView()命令創(chuàng)建視圖的過(guò)程中,會(huì)在依賴的集合上加鎖。所有對(duì)該集合的操作需要等視圖創(chuàng)建結(jié)束后才能執(zhí)行。
  • 創(chuàng)建視圖的過(guò)程中,Mongodb會(huì)在system.view集合上加鎖,當(dāng)創(chuàng)建視圖結(jié)束后,該鎖才會(huì)被釋放。

應(yīng)用兩種方式創(chuàng)建視圖

構(gòu)建一個(gè)student集合,用于創(chuàng)建視圖

db.students.insertMany( [
    { sID: 22001, name: "Alex", year: 1, score: 4.0},
    { sID: 21001, name: "bernie", year: 2, score: 3.7},
    { sID: 20010, name: "Chris", year: 3, score: 2.5},
    { sID: 22021, name: "Drew", year: 1, score: 3.2},
    { sID: 17301, name: "harley", year: 6, score: 3.1},
    { sID: 21022, name: "Farmer", year: 1, score: 2.2},
    { sID: 20020, name: "george", year: 3, score: 2.8},
    { sID: 18020, name: "Harley", year: 5, score: 2.8}
])

使用db.createView()創(chuàng)建一個(gè)視圖,查詢出一年級(jí)學(xué)生的數(shù)據(jù)

db.createView(
    "V_firstYears", //視圖名稱
    "students",  //基于集合students創(chuàng)建視圖
    [{ $match: {year: 1}}] //集合查詢,匹配students表中一年級(jí)學(xué)生的數(shù)據(jù)
    )

查詢集合V_firstYears的數(shù)據(jù)

db.V_firstYears.find({},{_id: 0}) //使用{_id: 0}關(guān)閉返回結(jié)果中文檔id
/* 1 createdAt:12/25/2023, 4:01:19 PM*/
{
	"_id" : ObjectId("658936cfe0ac6d3d14d04bde"),
	"sID" : 22001,
	"name" : "Alex",
	"year" : 1,
	"score" : 4
},
/* 2 createdAt:12/25/2023, 4:01:19 PM*/
{
	"_id" : ObjectId("658936cfe0ac6d3d14d04be1"),
	"sID" : 22021,
	"name" : "Drew",
	"year" : 1,
	"score" : 3.2
},
/* 3 createdAt:12/25/2023, 4:01:19 PM*/
{
	"_id" : ObjectId("658936cfe0ac6d3d14d04be3"),
	"sID" : 21022,
	"name" : "Farmer",
	"year" : 1,
	"score" : 2.2
}

使用db.createCollection()方法創(chuàng)建一個(gè)查詢畢業(yè)生的視圖。

db.createCollection(
    "v_graduateStudents", 
    {
        viewOn: "students",
        pipeline: [ { $match: { $expr: { $gt: ["$year", 4]}}}],//查詢超過(guò)4年的數(shù)據(jù)
        collation: { locale: "en", caseFirst: "upper"} //添加字符序定義,指定排序方法
    }
)

查詢定義的畢業(yè)生視圖。查詢過(guò)程中,添加了按照學(xué)生姓名進(jìn)行排序。定義視圖時(shí)指定了按照大寫字母優(yōu)先的排序規(guī)則,則Harey排在前面。

db.v_graduateStudents.find({},{_id: 0}).sort('name')
/* 1 */
{
	"sID" : 18020,
	"name" : "Harley",
	"year" : 5,
	"score" : 2.8
},
/* 2 */
{
	"sID" : 17301,
	"name" : "harley",
	"year" : 6,
	"score" : 3.1
}

刪除視圖,重新建立一個(gè)小寫字母優(yōu)先的字符序規(guī)則

db.v_graduateStudents.drop()
db.createCollection(
    "v_graduateStudents", 
    {
        viewOn: "students",
        pipeline: [ { $match: { $expr: { $gt: ["$year", 4]}}}],
        collation: { locale: "en", caseFirst: "lower"}
    }
)

查詢新建的視圖,返回結(jié)果與前面的排序結(jié)果不同。

db.v_graduateStudents.find({},{_id: 0}).sort('name')
/* 1 */
{
	"sID" : 17301,
	"name" : "harley",
	"year" : 6,
	"score" : 3.1
},
/* 2 */
{
	"sID" : 18020,
	"name" : "Harley",
	"year" : 5,
	"score" : 2.8
}

到此這篇關(guān)于MongoDB創(chuàng)建和查詢視圖的文章就介紹到這了,更多相關(guān)MongoDB查詢視圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB分片模式集群部署方案詳解

    MongoDB分片模式集群部署方案詳解

    本文給大家介紹MongoDB分片模式集群部署方案詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-11-11
  • MongoDB學(xué)習(xí)筆記之分組(group)使用示例

    MongoDB學(xué)習(xí)筆記之分組(group)使用示例

    這篇文章主要介紹了MongoDB學(xué)習(xí)筆記之分組(group)使用示例,本文直接給出一組測(cè)試數(shù)據(jù),然后練習(xí)分組的基本使用,需要的朋友可以參考下
    2015-07-07
  • MongoDB學(xué)習(xí)筆記—Linux下搭建MongoDB環(huán)境

    MongoDB學(xué)習(xí)筆記—Linux下搭建MongoDB環(huán)境

    本篇文章主要介紹了Linux下搭建MongoDB環(huán)境,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 2021最新版windows10系統(tǒng)MongoDB數(shù)據(jù)庫(kù)安裝及配置環(huán)境

    2021最新版windows10系統(tǒng)MongoDB數(shù)據(jù)庫(kù)安裝及配置環(huán)境

    這篇文章主要介紹了2021最新版MongoDB數(shù)據(jù)庫(kù)安裝及配置環(huán)境(windows10系統(tǒng)),本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot?集成MongoDB實(shí)現(xiàn)文件上傳功能

    SpringBoot?集成MongoDB實(shí)現(xiàn)文件上傳功能

    這篇文章主要介紹了SpringBoot?集成MongoDB實(shí)現(xiàn)文件上傳,主要通過(guò)示例代碼記錄文件上傳的步驟,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • MongoDB對(duì)數(shù)組進(jìn)行增刪改查操作

    MongoDB對(duì)數(shù)組進(jìn)行增刪改查操作

    與關(guān)系型數(shù)據(jù)庫(kù)相比,MongoDB支持?jǐn)?shù)組,將數(shù)組存儲(chǔ)到文檔之中,下面這篇文章主要給大家介紹了關(guān)于MongoDB對(duì)數(shù)組進(jìn)行增刪改查操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Mongodb中使用$each向數(shù)組字段插入多個(gè)元素的操作方法

    Mongodb中使用$each向數(shù)組字段插入多個(gè)元素的操作方法

    $each操作符應(yīng)用在UPDATE操作中的$addToSet和$push操作符當(dāng)中,與$addToSet搭配使用時(shí),將數(shù)組中的多個(gè)值插入到數(shù)組字段當(dāng)中,本文給大家介紹了Mongodb中使用$each向數(shù)組字段插入多個(gè)元素的操作方法,需要的朋友可以參考下
    2024-06-06
  • MongoDB常用操作匯總

    MongoDB常用操作匯總

    MongoDB 是由C++語(yǔ)言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫(kù)系統(tǒng)。在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
    2017-05-05
  • MongoDB如何更新多級(jí)文檔的數(shù)據(jù)

    MongoDB如何更新多級(jí)文檔的數(shù)據(jù)

    MongoDB 這類文檔型數(shù)據(jù)庫(kù)與關(guān)系型數(shù)據(jù)庫(kù)最大的差別就是所有數(shù)據(jù)是按文檔存儲(chǔ)的,因此更新時(shí)會(huì)涉及深層數(shù)據(jù)更新,例如更如何新某個(gè)對(duì)象的下級(jí)對(duì)象屬性。本篇介紹如何更新多級(jí)文檔的數(shù)據(jù)。
    2021-06-06
  • MongoDB索引優(yōu)化之識(shí)別并消除索引冗余的實(shí)用方法

    MongoDB索引優(yōu)化之識(shí)別并消除索引冗余的實(shí)用方法

    在MongoDB中,索引冗余是性能優(yōu)化的最大陷阱之一,據(jù)MongoDB官方統(tǒng)計(jì),70%的生產(chǎn)環(huán)境存在至少30%的冗余索引,這些索引不僅占用寶貴內(nèi)存還會(huì)導(dǎo)致緩存污染和鎖競(jìng)爭(zhēng),本文將通過(guò)量化分析方法和實(shí)戰(zhàn)案例,教您系統(tǒng)性地識(shí)別和消除冗余索引,需要的朋友可以參考下
    2026-03-03

最新評(píng)論

吉首市| 南乐县| 诸暨市| 措勤县| 大安市| 桐庐县| 深泽县| 曲沃县| 望都县| 南澳县| 南平市| 独山县| 新民市| 康定县| 岳西县| 寻乌县| 南皮县| 望谟县| 宁国市| 临西县| 民和| 县级市| 亚东县| 云龙县| 汶川县| 文安县| 郸城县| 阿鲁科尔沁旗| 特克斯县| 呼图壁县| 龙口市| 府谷县| 淳化县| 罗山县| 虎林市| 荔波县| 新余市| 重庆市| 天水市| 邹城市| 阳春市|