簡體   English   中英

如何在mongodb中構建此數據庫?

[英]How to construct this database in mongodb?

說我在mongodb中有兩個集合,一個集合用於包含用戶基本信息的用戶,另一個集合用於包含應用程序的應用程序。現在,如果允許用戶添加應用程序,並且下次他們登錄時,網絡應該讓用戶添加應用程序為他們。我應該如何在mongodb中構建這種數據庫。

users:{_id:ObjectId(),username:'username',password:'password'}
apps:{_id:ObjectId(),appname:'',developer:,description:};

以及如何為用戶添加用戶應用??? 我是否應該添加諸如addedAppId之類的內容:

users:{_id:ObjectId(),username:'username',password:'password',addedApppId:[]}

指示他們已經添加了哪個應用,然后使用addedAppId來獲取應用?

是的, users集合沒有什么不妥, users跟蹤users按照您的指示添加了哪些應用。

這在MongoDB中稱為linking 在關系系統中,您可能會創建一個單獨的表added_apps ,該表具有用戶ID,應用程序ID和任何其他相關信息。 但是由於您無法加入,因此將這些信息保留在users集合中是完全適當的。

文檔

設計MongoDB模式時的關鍵問題是何時嵌入和何時鏈接。 嵌入是BSON文檔中對象和數組的嵌套。 鏈接是文檔之間的引用。

MongoDB中沒有聯接-在1,000個服務器群集上很難進行分布式聯接。 嵌入有點像“預連接”數據。 文檔中的操作很容易由服務器處理。 這些操作可以相當豐富。 相反,鏈接必須由應用程序在客戶端進行處理; 應用程序通過發出后續查詢來做到這一點。

(這是您需要做的額外工作,從用戶存儲的AppId獲取應用程序信息。)

通常,對於實體之間的“包含”關系,應選擇嵌入。 不使用鏈接時使用鏈接將導致數據重復。

...

多對多關系通常是通過鏈接來完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM