MGO 中每个 post 获得所有赞的最佳改进方法?
The most improved way to get all likes for each post in MGO?
Likes
有不同的collection,Posts
也是如此。
但是,也许它更高效、更环保:
- 只是获取所有
posts
并且当用户将鼠标悬停在获取喜欢的帖子上时
- 或者当交集 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 数组。
Likes
有不同的collection,Posts
也是如此。
但是,也许它更高效、更环保:
- 只是获取所有
posts
并且当用户将鼠标悬停在获取喜欢的帖子上时 - 或者当交集 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 数组。