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

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

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

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

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

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

限制和注意事項

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

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

構(gòu)建一個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)建一個視圖,查詢出一年級學(xué)生的數(shù)據(jù)

db.createView(
    "V_firstYears", //視圖名稱
    "students",  //基于集合students創(chuàng)建視圖
    [{ $match: {year: 1}}] //集合查詢,匹配students表中一年級學(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)建一個查詢畢業(yè)生的視圖。

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

查詢定義的畢業(yè)生視圖。查詢過程中,添加了按照學(xué)生姓名進行排序。定義視圖時指定了按照大寫字母優(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
}

刪除視圖,重新建立一個小寫字母優(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    MongoDB常用操作匯總

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

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

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

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

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

最新評論

米脂县| 临澧县| 东乡族自治县| 广昌县| 鲁甸县| 东丰县| 鹤庆县| 枞阳县| 海丰县| 凤翔县| 齐齐哈尔市| 石嘴山市| 铜山县| 英山县| 类乌齐县| 邻水| 肥城市| 枝江市| 尼玛县| 绥棱县| 灵璧县| 金山区| 木兰县| 罗山县| 沈丘县| 清丰县| 青川县| 彭阳县| 台江县| 静乐县| 观塘区| 山东| 富蕴县| 大名县| 沙湾县| 兴仁县| 周口市| 文水县| 青铜峡市| 三原县| 临沭县|