我有我的,每个用户每个月collection
SocialWall
都有自己的驱动通知。Document
Event
我的问题是,users
将希望根据内部对象TS
中的字段获取新通知。有效地询问您能否给我自 TS 以来的所有通知?(为了这个例子,我们假装在同一个月内)Event
SocialWall
TS
为了只给用户他/她想要的东西,我在这里有一个选择。
1)我是否从中获取整个月份SocialWall
并对其进行排序PHP
?
随着用户朋友的增加以及与应用程序的不同交互增加,该数组将真正快速增长,因为用户将有很多事件。因此,我将不得不按TS
一个巨大的数组进行排序和过滤。这可能不是大规模的性能或内存管理的最佳选择。
2)我是否制作一个Map Reduce
函数并MongoDB
给我排序和过滤的数组?
我一直在阅读,有很多关于map reduce
效率不高的评论。是的,因为2.4
它已经改进了,但是作为一个new to Mongo
并且Map Reduce
(我以前从未做过)我不知道这在性能方面的真正含义。因此,我担心创建一个缓慢的查询,这反过来会给我的 Mongo 服务器带来更多压力。此外,我一直在读到很多人更喜欢使用Hadoop
他们的复杂查询map reduce
来获得最佳性能。
我想知道我的问题目前的最佳解决方案是什么?我应该去分类PHP
还是做一个Map Reduce
?
如果Map Reduce
是最好的解决方案,我该怎么做?
该文件看起来像这样
SocialWall
{
_id: MongoId
userId: MongoId
Month: 1003(MonthYear)
Events:[]
}
Event
{
_id: MongoId
userId: MongoId
ts: ISODate
details:[]
likedBy:[]
comments:[]
}