乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      查詢 MongoDB 子文檔的 List 字段

       raqsoft 2019-07-31


      在 Mongodb 應(yīng)用中,經(jīng)常會(huì)在 List 結(jié)構(gòu)中存入由若干字段組合而成的字符串?dāng)?shù)據(jù)。這種方式對于 Mongodb 的管理比較方便,如大量導(dǎo)入導(dǎo)出數(shù)據(jù)時(shí),不用關(guān)注數(shù)據(jù)與字段的對齊問題,導(dǎo)入導(dǎo)出數(shù)據(jù)也比較快。不過,事物的特性往往存在兩方面,有利有弊,這種方式在遇到統(tǒng)計(jì)計(jì)算需求時(shí),就需要將字符串進(jìn)行拆分,同時(shí)轉(zhuǎn)換數(shù)據(jù)類型,再進(jìn)行數(shù)據(jù)計(jì)算。這時(shí)用 mongodb shell 操作就比較麻煩了,而集算器 SPL 語言擁有豐富的接口函數(shù),實(shí)現(xiàn)就容易多了?,F(xiàn)在我們通過樣例來看看如何實(shí)現(xiàn)。

            Collction Cbettwen含有多級子文檔,其中 dataList 是 List 型,含有多個(gè)字符串,每個(gè)字符串由多個(gè)數(shù)字組成。需要找出符合如下條件的字符串:第 1 個(gè)數(shù)字大于 6154 并小于等于6155。

            Cbettwen 的某個(gè)文檔如下:
      {
                "_id" : ObjectId("54f6a766bf4436333edcd6a2"),
                "_class" : "com.abc.core.bo.obj.Objs",
                "objList" : [
                      {
                       "name" : "ABB-09",
                         "uid" : "ABB-09",
                         "data" : {
                              "dataId" : NumberLong(0),
                              "dataList" : [
                                    "6150,32.9,1.475,,1.434",
                                    "6150.5,43,,1.529,1.402",
                                    "6151,31.8,1.506,1.447,1.453",
                                    "6151.5,33.6,1.481,1.456,1.521",
                                    "6152,30.9,1.465,1.472,1.547",
                                    "6152.5,39.5,1.404,1.425,1.485",
                                    "6153,43.2,1.406,1.446,1.481",
                                    "6153.5,39.5,1.433,1.468,1.488",
                                    "6154,32.7,1.459,1.477,1.427",
                                    "6154.5,37.9,1.529,1.429,1.429",
                                    "6155,30.4,1.505,1.532,1.543",
                                    "6155.5,37.3,1.49,1.436,1.462",
                                    "6156,35.3,1.538,1.45,1.488",
                                    "6156.5,37.3,1.517,1.535,1.473",
                                    "6157,32.7,1.401,1.405,1.497",
                                    "6157.5,38.9,1.488,1.468,1.499",
                                    "6158,35.4,1.526,1.422,1.452",
                                    "6158.5,43.3,1.516,1.433,1.491",
                                    "6159,34.6,1.519,1.442,1.478",
                                    "6159.5,42.7,1.426,1.514,1.428",
                                    "6160,32.7,1.451,1.5,1.516"
                                    ]
                               }
                       }
               ]
       }

      符合要求的字符串為:"6154.5,37.9,1.529,1.429,1.429","6155,30.4,1.505,1.532,1.543"。

      集算器代碼:


      A
      1=mongo_open("mongodb:// localhost:27017/local?user=test&password=test")
      2=mongo_shell(A1,"Cbettwen.find(,{_id:0})")
      3=A2.conj((t=~.objList.data.dataList.new(~),t.select((s=float(#1.split@c()(1)),s>6154   && s<=6155))))
      4=A3.fetch()
      5=mongo_close(A1)

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

            A2:使用find函數(shù)從MongoDB中取數(shù),形成游標(biāo)。collection是Cbettwen,過濾條件是空,取出_id之外的所有字段。

            A3:找到符合條件的字符串。函數(shù)conj可對A2中每個(gè)文檔的計(jì)算結(jié)果進(jìn)行合并,~表示上級序表的每個(gè)成員。函數(shù)new可新建序表。#1表示序表的第1個(gè)字段。函數(shù)split可將字符串拆為序列,默認(rèn)分隔符是逗號,@1表示只拆成兩個(gè)成員,遇到第1個(gè)分隔符就返回。s表示將首個(gè)字符串轉(zhuǎn)換成float類型的數(shù)值,然后進(jìn)行比較篩選。

            A4: 對游標(biāo)進(jìn)行批處理,獲得內(nèi)存數(shù)據(jù),結(jié)果如下:

      6154.5,37.9,1.529,1.429,1.429
      6155,30.4,1.505,1.532,1.543
      6154.6,100.9,1.529,1.429,1.429
      6154.7,200.9,1.529,1.429,1.429
      6155,100.3,1.49,1.436,1.462
      6155,200.3,1.49,1.436,1.462
      6154.6,300.9,1.529,1.429,1.429
      6154.7,400.9,1.529,1.429,1.429
      6155,300.3,1.49,1.436,1.462
      6155,400.3,1.49,1.436,1.462
      6154.6,500.9,1.529,1.429,1.429
      6154.7,600.9,1.529,1.429,1.429
      6155,500.3,1.49,1.436,1.462

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

            可以看見,SPL語言的實(shí)現(xiàn)相對mongodb來說,更加精簡容易。

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多