Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MongoDB存储a的最佳技术;例如;求职_Php_Mongodb - Fatal编程技术网

Php MongoDB存储a的最佳技术;例如;求职

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

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

我有以下两个收藏:

用户
收藏

用户集合中的文档示例:

{
   "_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。你是在暗示这种技术吗?