我是MongoDB的新手。 我正在尝试用PHP开发一个简单的练习项目。
我有两个集合如下:
users
集合
用户集合中的文档示例:
{
"_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(存储在会话中)是否在likes
数组中。
现在,我正在获取整个likes
数组并检查PHP中的用户ID。
我在想,这个问题的最佳解决方案是什么。
感谢您的帮助!
答案 0 :(得分:2)
您可以管理帖子集合上的计数器。 减少时间复杂度解决方案的最佳方法是创建不同的集合。 并将帖子ID用作密钥,用户ID用作值。
然后你可以执行这个操作:
db.likes.find({"post_id": "user_id"})
这将为您提供特定用户ID和帖子ID组合的结果。
注意:此方法在时间复杂度方面很好,但会使用内存,因为它每次都会保存post_id。