MGO 中每个 post 获得所有赞的最佳改进方法?

The most improved way to get all likes for each post in MGO?

Likes有不同的collection,Posts也是如此。

但是,也许它更高效、更环保:

  1. 只是获取所有 posts 并且当用户将鼠标悬停在获取喜欢的帖子上时
  2. 或者当交集 api 被触发时在屏幕上可见,获取喜欢,

我应该使用 lookup 或 aggregate 还是简单地使用 mongodb 中的 findall 方法?

todoCollection := config.MI.DB.Collection("productpost")

pipeline := mongo.Pipeline{
        {
            {"$lookup", bson.D{
                {"from", "productfavorite"},
                {"let", bson.D{
                    {"constituents", "$productstate"}},
                },
                {"pipeline", bson.A{bson.D{
                    {"$match", bson.D{{"productstate", "Published"}}},
                }}},
                {"as", "productfavorite"},
            }},
        },
    }

cursor, err := todoCollection.Aggregate(c.Context(), pipeline)

    if err != nil {
        return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
            "success": false,
            "message": "Something went wrong",
            "error":   err.Error(),
        })
    }

    

我认为一种方法是在同一个集合中同时拥有 post 和喜欢的东西。如下所示。

posts : [{ id : 1, text : "this is text in post", likes : 3, likedBy : [ariana, justin, ..] }] 现在,在获取 post 时,您可以使用 project 来不获取 likedBy 列表。这样一来,您就可以向用户显示每个 post 的点赞数。然后如果需要你可以在之后获取 likedBy 数组。