【问题标题】:Mongodb performance increase likes field or return size of arrayMongodb 性能提升喜欢字段或数组的返回大小
【发布时间】:2020-04-28 16:41:15
【问题描述】:

我的问题是:如果我有一个名为 posts 的集合。用户可以点赞一个帖子,但只能点赞一次,所以我需要将他保存在某个地方,可能是在一个名为userThatLiked 的嵌入式数组中,这样他就不能点赞两次。有一个字段likes 并在新用户喜欢它时增加该值更好,还是返回嵌入数组的长度userThatLiked 更好?这对性能有影响吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    是的,您可以嵌入文档,例如

    {
        _id: post_1
        likes : [ user_id_1,user_id_2,user_id_3]
    }
    

    当用户点击like按钮时,你应该使用addtoSet而不是push

    【讨论】:

    • 我的问题是,例如,如果有 1000 万人喜欢该帖子,我的 likes 数组将是巨大的。有一个正在增加的字段likes 更好还是我只返回数组的大小无关紧要?
    • 您是否像我发布的那样保存在数组中并不重要。但是,如果您为每个用户都放置嵌套文档,那将是一个问题。
    • 不,我的想法只是保存喜欢的用户的_id
    • 那么从我的经验来看没关系
    • @Ifaruki MongoDB 的文档大小限制为 16MB docs.mongodb.com/manual/core/document/#document-size-limit。所以如果你真的认为你会有数百万个数组元素,那实际上是个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2014-02-08
    • 1970-01-01
    • 2015-07-26
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多