mongodb存list_查询 MongoDB 子文档的 List 字段
【摘要】
MongoDB 對(duì)于 List 結(jié)構(gòu)中由若干字段組合而成的字符串?dāng)?shù)據(jù)有統(tǒng)計(jì)需求時(shí),使用其 shell 腳本來實(shí)現(xiàn)有些復(fù)雜,而集算器 SPL 語言,則因擁有豐富的接口函數(shù),實(shí)現(xiàn)就容易多了。若想了解更多,請(qǐng)前往乾學(xué)院:查詢 MongoDB 子文檔的 List 字段!
在 Mongodb 應(yīng)用中,經(jīng)常會(huì)在 List 結(jié)構(gòu)中存入由若干字段組合而成的字符串?dāng)?shù)據(jù)。這種方式對(duì)于 Mongodb 的管理比較方便,如大量導(dǎo)入導(dǎo)出數(shù)據(jù)時(shí),不用關(guān)注數(shù)據(jù)與字段的對(duì)齊問題,導(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)就容易多了。現(xiàn)在我們通過樣例來看看如何實(shí)現(xiàn)。
Collction Cbettwen含有多級(jí)子文檔,其中 dataList 是 List 型,含有多個(gè)字符串,每個(gè)字符串由多個(gè)數(shù)字組成。需要找出符合如下條件的字符串:第 1 個(gè)數(shù)字大于 6154 并小于等于6155。
Cbettwen的某個(gè)文檔如下:
符合要求的字符串為:"6154.5,37.9,1.529,1.429,1.429","6155,30.4,1.505,1.532,1.543"。
集算器代碼:
A2:使用find函數(shù)從MongoDB中取數(shù),形成游標(biāo)。collection是Cbettwen,過濾條件是空,取出_id之外的所有字段。
A3:找到符合條件的字符串。函數(shù)conj可對(duì)A2中每個(gè)文檔的計(jì)算結(jié)果進(jìn)行合并,~表示上級(jí)序表的每個(gè)成員。函數(shù)new可新建序表。#1表示序表的第1個(gè)字段。函數(shù)split可將字符串拆為序列,默認(rèn)分隔符是逗號(hào),@1表示只拆成兩個(gè)成員,遇到第1個(gè)分隔符就返回。s表示將首個(gè)字符串轉(zhuǎn)換成float類型的數(shù)值,然后進(jìn)行比較篩選。
A4: 對(duì)游標(biāo)進(jìn)行批處理,獲得內(nèi)存數(shù)據(jù),結(jié)果如下:
A5:關(guān)閉mongodb連接。
可以看見,SPL語言的實(shí)現(xiàn)相對(duì)mongodb來說,更加精簡容易。
總結(jié)
以上是生活随笔為你收集整理的mongodb存list_查询 MongoDB 子文档的 List 字段的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2023-03-22 | 苹果 iOS
- 下一篇: 假阴线洗盘特征 假阴线的洗盘特征是