gpt4 book ai didi

php - MongoDB 为帖子存储 "like"的最佳技术

转载 作者:可可西里 更新时间:2023-11-01 09:39:32 25 4
gpt4 key购买 nike

我是 MongoDB 的新手。我正在尝试用 PHP 开发一个简单的练习项目。

我有两个集合如下:

用户集合

用户集合中的文档示例:

{
"_id": ObjectId("57f099cf1ccbdd780b000029"),
"first_name": "Foo",
"last_name": "Bar",
"username": "foobar",
"email": "foobar@gmail.com",
"password": "$2y$10$5ec2yYQ8Xl1HH3zM6205LupR7hf/xOLLW9vU7VMYiUc317HB6p76e"
}

posts合集

帖子集合中的文档示例:

{
"_id": ObjectId("57ef7be11ccbdd4c17000029"),
"uid": ObjectId("57e6ff571ccbdd6016000029"),
"content": "Data of the post goes here!",
"time": NumberInt(1475312609),
"likes": [],
"comments": []
}

likes 键将用户 ID 保存在数组中。

我面临的问题是,如果用户已经喜欢该帖子,我想显示“不喜欢”按钮。在这种情况下,我必须检查当前用户的用户 ID(存储在 session 中)是否在 likes 数组中。

现在,我正在获取整个 likes 数组并在 PHP 中检查用户 ID。

我在想,这个问题的最佳解决方案是什么。

感谢您的帮助!

最佳答案

您可以管理帖子集合上的计数器。减少时间复杂度的最佳解决方案是创建一个不同的集合。并将帖子 ID 用作键,用户 ID 用作值。

然后你可以执行这个操作:

db.likes.find({"post_id": "user_id"})

这将为您提供特定用户 ID 和帖子 ID 组合的结果。

注意:这种方法在时间复杂度上是好的,但是会占用内存,因为它每次都会保存 post_id。

关于php - MongoDB 为帖子存储 "like"的最佳技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com