我正在为我的网站做一个通知系统。类似的通知系统facebook
。或stackoverflow
。我有2个问题。
如何存储在数据库中?我可以将所有通知存储在用户文档中吗?或者在一个单独的文档中(因为我认为monogdb在文档中的大小是有限的?)或者,智能存储?(使用 inc 或 db 中的值(参见:true/false),查询复杂)
页面上的 for 怎么办?例如,当我单击我
inbox
的 for中的链接时stackoverflow
,我将重定向到该页面。但是我,我有一个系统,multipage
例如:我有 100 个朋友。每页列出 30 个。因此,当我单击通知时,我无法重定向到,因为不可能知道好的页面(可以删除用户)。
非常感谢你 !如果您有其他想法,请告诉我。谢谢。
编辑:
(对不起我的英语,我是法国人)
对于第一个问题,我意识到我必须等待时机来选择我的结构。因为我的通知..有点复杂,所以提前感受下。
第二,我解决了这个问题。我解释一下:(我以朋友为例,因为它很容易理解。)我这样存储我的数据:
{
friends: [
{_id: xxxxx, ts: xxxx},
{_id: xxxxx, ts: xxxx}
]
}
想象一下,我显示所有朋友:每页 30 个。问题是:
- 当我想显示所有朋友时,我无法使用 mongo 进行排序。(一个小问题)
- 如果我想在一个特别的朋友处将用户引导到此列表(每页 30 个),请始终保留
sort
byts
。我不知道页面。唯一的解决方案是获取所有文档。但是:性能非常差。
所以,我这样存储:
{
friends: {
xxxx: {ts:xxx},
xxxx: {ts:xxx}
}
}
知道我可以使用跳过和限制对文档进行排序。所以如果我想要一份,我不需要拿走所有的文件。
要知道页面,我只需对 ts 进行 < 或 > 的数量,例如,我有 11 个朋友 > 到我想要的朋友的 ts,并对所有朋友进行计数(例如:50 个朋友)用 50 和 11,我可以猜到页面。
这个解决方案好吗?- 我需要一个计数 - 一个查询以了解 > 或 < 的数量,我可以获取列出朋友的页面,保持the sort ts
你无法理解我为什么使用计数。我需要,因为它们没有存储在同一个文档中。
2 编辑:
query object
这个解决方案的问题是我需要update object
在mongo query
(例如:for dofriends.xxxxxx: {$exists:true}
ps:用什么优势ts
代替date
mongodb ?我正在使用ts
,但我想我会存储date
,没有ts
。
3 编辑
我会喜欢的Sammaye
。存放在单独的文件中。看看: http: //mongly.com/Multiple-Collections-Versus-Embedded-Documents/#1和http://openmymind.net/2012/1/30/MongoDB-Embedded-Documents-vs-Multiple-收藏/