Mongo:试图没有加入

时间:2014-11-07 17:28:07

标签: mongodb

所以我试图以收集/文档的方式思考,但没有遇到麻烦。

据我所知,以“方式”方式复制文件是绝对可以的。

例如我有“帖子”集合。它具有“text”,“likes”和“createdAt”属性。

{
    text: "Hello world!",
    likes: 12,
    createdAt: "2014.11.01"
},
{
    text: "I suck in Mongo",
    likes: 25,
    createdAt: "2014.11.01"
},
{
    text: "I quit",
    likes: 320,
    createdAt: "2014.11.02"
},
{
    text: "Lorem ipsum",
    likes: 3,
    createdAt: "2014.11.02"
}

然后我想输出这样的帖子:

<h1>2014.11.01 (37)</h1>

<ul>
    <li>Hello world! (12)</li>
    <li>I suck in Mongo (25)</li>
</ul>

<h1>2014.11.02 (323)</h1>

<ul>
    <li>I quit (320)</li>
    <li>Lorem ipsum (3)</li>
</ul>

正如您在H1标签中看到的那样,我将每个帖子“喜欢”计在一起。

有两种方法可以做到这一点。

  1. 循环“帖子”收集并计算每个日期的“喜欢”。
  2. 为此特定案例创建新的收集和存储数据。
  3. 根据我的理解,第一种方式并不是最好的方式。例如,我想在几个月,几年等时间做同样的逻辑。

    行。让我们使用第二种方式。我将创建“天”集合。

    {
        date: "2014.11.01",
        likes: 37,
        posts: [
            { text: "Hello world!", likes: 12, createdAt: "2014.11.01" },
            { text: "I suck in Mongo", likes: 25, createdAt: "2014.11.01" }
        ]
    },
    {
        date: "2014.11.02",
        likes: 323,
        posts: [
            { text: "I quit", likes: 320, createdAt: "2014.11.02" },
            { text: "Lorem ipsum", likes: 3, createdAt: "2014.11.02" }
        ]
    }
    

    大。现在我可以使用“days”集合作为我的“by date”html,我可以使用“posts”集合进行搜索功能,或者只打印普通列表中的所有帖子。

    然后我可以创建“月”收集和“年”收集。

    正如您所看到的,会有很多重复。相同的帖子存储在4个集合中(帖子,天,月,年)。但据我所知,这是一种蒙古方式。

    当有人添加喜欢发布时,我需要更新4个集合。容易,只是递增计数。

    但如果有人(例如管理员)在某些帖子中更改“喜欢”计数,我需要实现一些逻辑,以便在“天”,“月”和“年”中重新计算“喜欢”。

    我可以看到有很多方法可以在那里犯错误。 Bug可以非常快速地同步我的数据,因此我需要重新计算“喜欢”计数。多年来收藏这是一个问题。在阵列中循环每个帖子...多久一次?如果有很多帖子?这似乎太复杂了。

    也许我会走错路。也许我需要一些文献来更好地理解Mongo。

    谢谢。

0 个答案:

没有答案