第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

mongodb數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及多維數(shù)組嵌套文檔的查詢

mongodb數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及多維數(shù)組嵌套文檔的查詢

三國紛爭 2019-03-20 14:15:31
1.以下Mongodb結(jié)構(gòu)是否合理? 注: 其中messageId是另一個(gè)消息集合的_id,數(shù)值請(qǐng)無視2.如何查詢出userId:FFFFFF,eventId:FFFFFF_18898981,messageStatus:1的messageId3.如何刪除userId:FFFFFF,eventId:FFFFFF_18898981下所有messageStatus:1的消息mongodb 結(jié)構(gòu)如下:{    "_id": 略,    "userId":FFFFFF,    "events":[        {            "eventId":"FFFFFF_18898981"            "messages":[                {                    "messageId":1,                    "messageStatus":1,                    "outTime":3000                },                {                    "messageId":2,                    "messageStatus":0,                    "outTime":3000                }                {                    "messageId":3,                    "messageStatus":1,                    "outTime":3000                }            ]        }        {            "eventId":"FFFFFF_28898981"            "messages":[                {                    "messageId":1,                    "messageStatus":1,                    "outTime":3000                },                {                    "messageId":2,                    "messageStatus":0,                    "outTime":3000                }                {                    "messageId":3,                    "messageStatus":1,                    "outTime":3000                }            ]        }    ]}
查看完整描述

2 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

這個(gè)結(jié)構(gòu)不太合理,內(nèi)嵌數(shù)組太多,你提到的查詢是可以搞的,但比較復(fù)雜,得靈活使用$unwind


用nosql,個(gè)人的建議是可以適當(dāng)冗余,然后數(shù)據(jù)結(jié)構(gòu)盡量平坦,這樣查詢效率較高,如果是我設(shè)計(jì),就采用下面很平坦的做法:


{

    "userId":FFFFFF

    "eventId:FFFFFF_18898981

    "messageId":1,

    "messageStatus":1,

    "outTime":3000

},

雖然冗余了userId和eventId在多條記錄里,但是查詢和索引都很好能,等于以空間換時(shí)間。適合放數(shù)組里面的最好是很簡單的結(jié)構(gòu),諸如標(biāo)簽這種純字符串?dāng)?shù)組


查看完整回答
反對(duì) 回復(fù) 2019-04-23
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

依次回答你的問題:
1.結(jié)構(gòu)不合理。我們?cè)贅?gòu)造JSON數(shù)據(jù)的時(shí)候,原則上不要嵌套多層,如果能嵌套多層的數(shù)據(jù)結(jié)構(gòu),其實(shí)是可以對(duì)java bean數(shù)據(jù)結(jié)構(gòu)本身再進(jìn)行抽象的,而且多層嵌套,在fastjson中。阿里巴巴的fastjson是不支持兩層嵌套的,多層嵌套的獲取數(shù)據(jù)要自己寫方法來取值,非常不利于開發(fā)。
2.查詢和刪除都要取值判斷,代碼如下:
定義一個(gè)java bean 屬性:String id, String userId List<Event> events;
Event events = (Event)JSON.toJavaObject(json, Event.class);
然后你依次獲取來比,[]是數(shù)組,里面存多個(gè)對(duì)象.{}中存放的是對(duì)象。

查看完整回答
反對(duì) 回復(fù) 2019-04-23
  • 2 回答
  • 0 關(guān)注
  • 837 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)