Php MongoDB存储a的最佳技术;例如;求职
我是MongoDB的新手。 我正在尝试用PHP开发一个简单的实践项目 我有以下两个收藏:Php MongoDB存储a的最佳技术;例如;求职,php,mongodb,Php,Mongodb,我是MongoDB的新手。 我正在尝试用PHP开发一个简单的实践项目 我有以下两个收藏: 用户收藏 用户集合中的文档示例: { "_id": ObjectId("57f099cf1ccbdd780b000029"), "first_name": "Foo", "last_name": "Bar", "username": "foobar", "email": "foobar@gmail.com", "password": "$2y$10$5ec2yYQ8Xl1
用户
收藏
用户集合中的文档示例:
{
"_id": ObjectId("57f099cf1ccbdd780b000029"),
"first_name": "Foo",
"last_name": "Bar",
"username": "foobar",
"email": "foobar@gmail.com",
"password": "$2y$10$5ec2yYQ8Xl1HH3zM6205LupR7hf/xOLLW9vU7VMYiUc317HB6p76e"
}
{
"_id": ObjectId("57ef7be11ccbdd4c17000029"),
"uid": ObjectId("57e6ff571ccbdd6016000029"),
"content": "Data of the post goes here!",
"time": NumberInt(1475312609),
"likes": [],
"comments": []
}
发布
收藏
posts集合中的文档示例:
{
"_id": ObjectId("57f099cf1ccbdd780b000029"),
"first_name": "Foo",
"last_name": "Bar",
"username": "foobar",
"email": "foobar@gmail.com",
"password": "$2y$10$5ec2yYQ8Xl1HH3zM6205LupR7hf/xOLLW9vU7VMYiUc317HB6p76e"
}
{
"_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
我在想,这个问题的最佳解决方案是什么
谢谢你的帮助 您可以管理post集合上的计数器。 降低时间复杂度的最佳解决方案是创建不同的集合。 用户post ID作为键,用户ID作为值 然后可以执行此操作:
db.likes.find({"post_id": "user_id"})
这将为您提供特定用户id和post id组合的结果
注意:此方法在时间复杂度方面很好,但会使用内存,因为它每次都会保存post_id。我会为喜欢的对象创建一个单独的集合。保留键值对吗?key是post ID,value是user ID。你是在暗示这种技术吗?