真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

合并mongodb子文檔-創(chuàng)新互聯(lián)

來源:https://groups.google.com/forum/#!topic/mongodb-user/BpgEaRqrKsA

創(chuàng)新互聯(lián)公司長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鄖西企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站建設(shè),鄖西網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

【摘要】

????????Mongodb 的 BSON 存儲格式靈活多樣,有助于 MongoDB 的入門學(xué)習(xí)。有集算器 SPL 語言支持后,Mongodb 能實(shí)現(xiàn)像數(shù)據(jù) SQL 那樣的方便查詢。

復(fù)制摘要

MongoDB文檔的存儲格式是BSON,一種類JSON的二進(jìn)制形式的存儲格式。如果熟悉JSON格式,將非常有助于MongoDB的入門學(xué)習(xí),不過和JSON一樣, BSON結(jié)構(gòu)靈活,組織形式多樣,在提供了強(qiáng)大的數(shù)據(jù)表達(dá)能力的同時(shí),要實(shí)現(xiàn)類似數(shù)據(jù)SQL那樣的方便查詢卻變成了一件非常不容易的事。

針對這個(gè)問題,集算器SPL語言內(nèi)置了豐富的接口,能夠極大地方便用戶使用Mongodb。 下面就用合并內(nèi)嵌子文檔結(jié)構(gòu)的例子來舉例說明。

Collection C1的部分?jǐn)?shù)據(jù)如下:

{
?????? "_id" : ? ObjectId("55014006e4b0333c9531043e"),,
?????? "acls" : {
????????????? "append" : {
???????????????????? "users" : ? [ObjectId("54f5bfb0336a15084785c393") ],
???????????????????? "groups" : [ ]
????????????? },
????????????? "edit" : {
???????????????????? "groups" : [ ],
???????????????????? "users" : [
??????????????????????????? ObjectId("54f5bfb0336a15084785c392")
???????????????????? ]
????????????? },
????????????? "fullControl" : {
???????????????????? "users" : [ ],
???????????????????? "groups" : [ ]
????????????? },
????????????? "read" : {
???????????????????? "users" : [? ObjectId("54f5bfb0336a15084785c392"),
???????????????????? ObjectId("54f5bfb0336a15084785c398")],
???????????????????? "groups" : [ ]
????????????? }
?????? },
???? name: "ABC"
}
?
{
?????? "_id" : ? ObjectId("55014006e4b0333c9531043f"),
?????? "acls" : {
????????????? "append" : {
???????????????????? "users" : [ObjectId("54f5bfb0336a15084785c365") ? ],
???????????????????? "groups" : [ ]
????????????? },
????????????? "edit" : {
???????????????????? "groups" : [ ],
???????????????????? "users" : [
??????????????????????????? ObjectId("54f5bfb0336a15084785c392")
???????????????????? ]
????????????? },
????????????? "fullControl" : {
???????????????????? "users" : [ ],
???????????????????? "groups" : [ ]
????????????? },
????????????? "read" : {
???????????????????? "users" : [ObjectId("54f5bfb0336a15084785c392"), ?
???????????????????? ObjectId("54f5bfb0336a15084785c370")],
???????????????????? "groups" : [ ]
????????????? }
?????? },
?????? name: "ABC"
}
?

要求按name分組,每組數(shù)據(jù)是相同的name對應(yīng)的子文檔中的users字段,且數(shù)據(jù)不能重復(fù)。最后的計(jì)算結(jié)果類似下面這樣:

{
result : [
?????? {
????????????? ?_id: "ABC",
????????????? ?readUsers : [
???????????????????? ?ObjectId("54f5bfb0336a15084785c393"),
???????????????????? ?ObjectId("54f5bfb0336a15084785c392"),
???????????????????? ObjectId("54f5bfb0336a15084785c398"),
???????????????????? ?ObjectId("54f5bfb0336a15084785c365"),
???????????????????? ObjectId("54f5bfb0336a15084785c370")
????????????? ]
????????????? ?}
]
}

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


AB
1=mongo_open("mongodb://localhost:27017/local?user=test&password=test")
2=mongo_shell(A1,"c1.find(,{_id:0};{name:1})")
3for A2;name=A3.(acls.read.users|acls.append.users|acls.edit.users|acls.fullControl.users)
4
=B3.new(A3.name:_id,B3.union().id():readUsers)
5
=@|B4.group@1(~._id,~.readUsers)
6=mongo_close(A1)

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

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

A3: 循環(huán)從游標(biāo)讀數(shù),每次取name字段相同的一組文檔。A3循環(huán)的作用范圍是縮進(jìn)的B3到B5,在這個(gè)作用范圍內(nèi)可以用A3來引用循環(huán)變量。

B3:取出本組文檔的所有users字段,如下:

合并 mongodb 子文檔

B4:合并本組各文檔的users。

B5:將B4去除重復(fù)記錄后不斷地追加到B5中,其中g(shù)roup@1實(shí)現(xiàn)去重處理。B5如下:

合并 mongodb 子文檔

B5就是本案例的計(jì)算目標(biāo)。如果計(jì)算結(jié)果太多導(dǎo)致內(nèi)存放不下,可以在B5中用函數(shù)export@j將B4轉(zhuǎn)為json串,不斷地追加到文本文件中。

A6:關(guān)閉mongodb。

MongoDB豐富靈活的存儲結(jié)構(gòu)輕量化、高效性,讓人印象深刻,而集算器能與它天然融合,提高使用效率,擴(kuò)展了應(yīng)用空間。

另外有需要云服務(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)用場景需求。


分享文章:合并mongodb子文檔-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/dcdohi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部