亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MongoDB關系:嵌入還是引用?

MongoDB關系:嵌入還是引用?

qq_笑_17 2019-05-28 18:04:32
MongoDB關系:嵌入還是引用?我是MongoDB的新手 - 來自關系數據庫背景。我想設計一個帶有一些注釋的問題結構,但我不知道用于評論的關系:embed或者reference?有一些注釋的問題,比如stackoverflow,會有這樣的結構:Question     title = 'aaa'     content = bbb'     comments = ???首先,我想使用嵌入式注釋(我認為embed在MongoDB中推薦),如下所示:Question     title = 'aaa'     content = 'bbb'     comments = [ { content = 'xxx', createdAt = 'yyy'},                   { content = 'xxx', createdAt = 'yyy'},                   { content = 'xxx', createdAt = 'yyy'} ]很清楚,但我擔心這種情況:如果我想編輯指定的評論,我該如何獲取其內容及其問題?沒有_id讓我找到一個,也沒有question_ref讓我找到它的問題。(我是新手,我不知道如果沒有_id和沒有任何方法可以做到這一點question_ref。)我必須用ref不embed?然后我必須創建一個新的評論集合?
查看完整描述

4 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

如果我想編輯指定的評論,如何獲取其內容及其問題?

您可以按子文檔查詢:db.question.find({'comments.content' : 'xxx'})

這將返回整個問題文件。要編輯指定的注釋,您必須在客戶端上找到注釋,進行編輯并將其保存回數據庫。

通常,如果您的文檔包含一個對象數組,您將發現這些子對象需要在客戶端進行修改。


查看完整回答
反對 回復 2019-05-28
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

好吧,我有點遲了但仍想分享我的架構創建方式。

我有一些可用一個詞描述的模式,就像你在經典的OOP中所做的那樣。

例如

  • 評論

  • 帳戶

  • 用戶

  • 博文

  • ...

每個模式都可以保存為Document或Subdocument,因此我為每個模式聲明了這一點。

文獻:

  • 可以作為參考。(例如,用戶發表了評論 - >評論對用戶有“制作者”的引用)

  • 在您的應用程序中是“根”。(例如博客帖子 - >有關于博客帖子的頁面)

子文檔:

  • 只能使用一次/永遠不是參考。(例如評論保存在博文中)

  • 在您的應用程序中永遠不是“根”。(評論只顯示在博客頁面中,但頁面仍然是關于博客帖子)


查看完整回答
反對 回復 2019-05-28
  • 4 回答
  • 0 關注
  • 1386 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號