簡體   English   中英

NoSQL設計-標簽和MVC

[英]Nosql design - tags and mvc

我正在使用Rails和Mongoid。 我試圖提出一種標記功能(類似於stackoverflow,因為每個用戶都可以擁有“收藏夾”標記)。

從我閱讀的有關mongodb的設計文章中,我了解到我需要停止以“第四常規”形式思考。 我一直在考慮使用tag_iduser_id一個多對多表,以及使用tag_iditem_id另一個多對多表。 但是通過閱讀有關nosql的信息,似乎最好在每個用戶或每個項目中嵌入標簽(作為標簽,甚至是字符串數組)。

在“標簽”集合中將有一個標簽列表,應用程序將控制用戶是否可以將標簽添加到他們的收藏夾中。

我正在嘗試找出方法。 我是否讓tag模型的title上有一個key ,並且只將這些keys的數組存儲在用戶模型中? 在這種情況下,“鏈接”或“嵌入”會更好嗎? 我試圖考慮如何檢索標簽,因為它們具有諸如foo-bar類的鍵,標題是Foo Bar 如果我需要檢索用戶的標簽,那么是否需要遍歷數組並獲取每個標簽模型以獲取標題?

在Ruby方面,我無能為力,但是MongoDB方面有一些選擇。

您可以創建一個標簽集合,其中的條目看起來像這樣: {_id: ObjectId(), title: "Foo Bar"} 然后,每個用戶也可以擁有其訂閱的標簽的ID值數組:

{ username: ...,
  tags: [ObjectId(), ObjectId(), ... ]}

然后,您可以使用$ in運算符檢索用戶標簽的標題:

db.tags.find({_id: { $in: [array from user] }});

暫無
暫無

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

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