1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      實(shí)現(xiàn)MongoDB外鍵關(guān)聯(lián)-創(chuàng)新互聯(lián)

      來源:http://stackoverflow.com/questions/29392169/populating-field-values-for-referred-documents-in-aggregate-call-in-mongoose ?。

      成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比臨翔網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式臨翔網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋臨翔地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

      【摘要】
      ????????Mongodb 作為分布式文件存儲(chǔ)的數(shù)據(jù)庫,想實(shí)現(xiàn)多表關(guān)聯(lián) JOIN 查詢并非易事。但通過集算器 SPL 語言,在 Mongodb 中多個(gè)表的外鍵關(guān)聯(lián)查詢,完全可以做到像關(guān)系數(shù)據(jù)庫那樣方便容易。

      MongoDB 是一個(gè)分布式文件存儲(chǔ)的數(shù)據(jù)庫,也是 nosql 中最像關(guān)系型數(shù)據(jù)庫的一種。但是 mongodb 采用文檔模式設(shè)計(jì)的,這意味著集合中的文檔可以有相同或不同的字段,因此在關(guān)系型數(shù)據(jù)庫非常擅長的多表關(guān)聯(lián)方面就顯得差強(qiáng)人意。如果采用 Mongodb 本身的 API 則需要硬編碼才能實(shí)現(xiàn)外鍵關(guān)聯(lián),不夠直觀且難度較大,這種情況下可以用集算器 SPL 語言來實(shí)現(xiàn),下面用例子說明。

      Collection UserCourseProgress 記錄著用戶和課程的關(guān)系,其courseid字段是外鍵,指向Collection Course的_id字段。需要統(tǒng)計(jì)出每門課的人數(shù),其中課程名稱需要使用Course的title字段進(jìn)行顯示。

      UserCourseProgressCourse
      {"userId":"u01",
      "courseid":"c01",
      "timespent":6000,
      score:99}
      {"userId":"u02",
      "courseid":"c01",
      "timespent":6000,
      score:99}
      {"userId":"u03",
      "courseid":"c01",
      "timespent":6000,
      score:99}
      {"userId":"u04",
      "courseid":"c01",
      "timespent":6000,
      score:99}
      {"userId":"u05",
      "courseid":"c01",
      "timespent":6000,
      score:99}
      {"userId":"u01",
      "courseid":"c02",
      "timespent":6000,
      score:99}
      {"userId":"u02",
      "courseid":"c02",
      "timespent":6000,
      score:99}
      {"userId":"u03",
      "courseid":"c03",
      "timespent":6000,
      score:99}
      {"_id":"c01"
      "title":"Japanese159",
      "description":"Japanese ? base",
      "category":"language"}
      {"_id":"c02"
      "title":"Chinese200",
      "description":"Chinese ? middle",
      "category":"language"}
      {"_id":"c03"
      "title":"Political ? science 280",
      "description":"Political ? middle",
      "category":"politics"}
      {"_id":"c04"
      "title":"EE490",
      "description":"electronic ? engineering hign",
      "category":"Electronic"}

      使用集算器SPL的代碼如下:


      A
      1=mongo_open("mongodb://localhost:27017/local?user=test&password=test")
      2=mongo_shell(A1,"UserCourseProgress.aggregate([{$group: ? {_id: {'primary':'$courseid'},'popularityCount': {$sum: 1}}}, {$sort:{'popularityCount':-1}},{$project:{_id:0,'courseid':'$_id.primary','popularityCount':1}}])")
      3=mongo_shell(A1,"Course.find(,{title:1})").fetch()
      4=A2.switch(courseid,A3:_id)
      5=A4.new(popularityCount,courseid.title)
      6=mongo_close(A1)

      A1: 連接MongoDB,連接字格式為mongo://ip:port/db?arg=value&…。

      A2: 統(tǒng)計(jì)出每門課的人數(shù)。這里使用MongoDB聚合函數(shù)aggregate在UserCourseProgress中取數(shù),參數(shù)是遵循mongodb規(guī)范的匯總表達(dá)式。計(jì)算結(jié)果是內(nèi)存數(shù)據(jù),如下:

      實(shí)現(xiàn) MongoDB 外鍵關(guān)聯(lián)

      A3: 用find函數(shù)從Course中取數(shù),過濾條件為空。Find的結(jié)果是游標(biāo),由于課程數(shù)量較少,因此用可以fetch函數(shù)將游標(biāo)讀入內(nèi)存,結(jié)果如下:

      實(shí)現(xiàn) MongoDB 外鍵關(guān)聯(lián)

      A4: 使用switch函數(shù)將A3中的外鍵切換為A2中的記錄,結(jié)果如下:

      實(shí)現(xiàn) MongoDB 外鍵關(guān)聯(lián)

      A5:按對(duì)象方式訪問內(nèi)存,形成新的二維表,結(jié)果如下:

      實(shí)現(xiàn) MongoDB 外鍵關(guān)聯(lián)

      A6:關(guān)閉mongodb連接。

      通過上面的例子可以看到,借助集算器SPL語言,在Mongodb中多個(gè)表的外鍵關(guān)聯(lián)查詢,完全可以做到像關(guān)系數(shù)據(jù)庫那樣方便、容易、直觀,不必?fù)?dān)心因?yàn)镸ongodb是非關(guān)系型數(shù)據(jù)庫而帶來的表間弱關(guān)聯(lián)的影響。

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


      分享題目:實(shí)現(xiàn)MongoDB外鍵關(guān)聯(lián)-創(chuàng)新互聯(lián)
      URL地址:http://www.ef60e0e.cn/article/cocpei.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        永济市| 曲松县| 师宗县| 苍梧县| 大田县| 鸡东县| 会理县| 繁昌县| 微山县| 绥中县| 新巴尔虎左旗| 沧州市| 壶关县| 历史| 湄潭县| 保靖县| 广昌县| 安徽省| 商城县| 阿坝县| 南召县| 龙南县| 彭阳县| 玛沁县| 定西市| 攀枝花市| 耒阳市| 舒兰市| 丹棱县| 绥滨县| 龙南县| 奎屯市| 越西县| 泾源县| 合川市| 米林县| 景泰县| 城固县| 凌源市| 扎鲁特旗| 凯里市|